Machen Logback schreiben Sie die Konsole vor Ort, sondern um die log-Datei auf dem server

In eine web-Applikation gebaut mit Maven 3, gibt es eine Möglichkeit zu haben, Logback nutzen entweder ein ConsoleAppender oder eine RollingFileAppender je nachdem, wo/wie die Anwendung ausgeführt wird?

In der Produktion die .war-Datei bereitgestellt wird, die auf Tomcat 7. Lokal bei mir läuft das Jetty Maven plugin für Testzwecke während der Entwicklung.

Ich würde gerne das logging funktioniert so:

  • Wenn ich mvn jetty:run lokal: Verwenden Sie ConsoleAppender
  • Wenn *.war - Datei bereitgestellt wird, die auf die Produktion (Tomcat 7): Verwenden Sie RollingFileAppender

Während der lokalen Entwicklung scheint es nur sehr komfortabel, haben alle log-Ausgaben auf der Konsole. In der Produktion würde ich stattdessen lieber in Datei protokollieren: CATALINA_BASE/logs/myApp.log.

Natürlich könnten Sie einfach beide ein ConsoleAppender und ein RollingFileAppender im logback.xml. Aber mir scheint es unnötig redundant, um alle log-Ausgabe auf die Produktion geschrieben STDOUT UND in eine log-Datei. Auch aus der Tomcat-Dokumentation, es klingt wie Protokollierung von STDOUT auf die Produktion ist eine schlechte Praxis im Allgemeinen.

Konnte ich nicht finden keine schönen Lösungen, die auf dem web. Gibt es eine gute Lösung für dieses?

Hier ist meine aktuelle logback.xml die immer Protokolle STDOUT und an die gewünschte log-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${catalina.base}/logs/myApp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${catalina.base}/logs/myApp.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.myDomain.myApp" level="DEBUG" />

    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>
InformationsquelleAutor Stefan Pries | 2014-03-10
Schreibe einen Kommentar