Ich habe die folgenden zwei Pakete:Verwenden von Log4J 1. *, wie kann ich zwei Pakete in zwei separate Dateien schreiben?
com.mycorp.project.first
com.mycorp.project.second
I Log4J (SLF4J) möchte konfigurieren, dass die Protokolle von einem Paket zu schreiben zu einer Datei und von dem anderen Paket zu einer zweiten Datei. Ich möchte nicht, dass sie zusammen gemischt werden.
Um klar zu sein, ist dies ein Projekt/ein Prozess läuft.
Ich habe versucht zu filtern und mit Loggern, aber sie scheinen von log4j ignoriert werden. Beide Dateien sind immer identisch.
Edit: Vielen Dank für die Antworten bis jetzt, das ist, was ich habe und es funktioniert nicht. Beide Ausgabedateien sind identisch.
<configuration debug="true">
<contextName>dev</contextName>
<appender name="FIRST_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>A:/dev/LogTesting/logs/first.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>A:/dev/LogTesting/logs/first.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="SECOND_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>A:/dev/LogTesting/logs/second.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>A:/dev/LogTesting/logs/second.%d{yyyyMMdd}%d{_HHmmss,aux}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<Pattern>%d{MMM dd HH:mm:ss.SSS} %property{HOSTNAME} [%thread] %level %logger{36} %msg%n</Pattern>
</encoder>
</appender>
<!-- =============================================================== -->
<logger name="com.test.apples" additivity="false">
<level value="DEBUG" />
<appender-ref ref="FIRST_FILE" />
</logger>
<logger name="com.test.oranges" additivity="false">
<level value="DEBUG" />
<appender-ref ref="SECOND_FILE" />
</logger>
<!-- =============================================================== -->
<category name="com.test.apples" additivity="false">
<priority value="DEBUG"/>
<appender-ref ref="FIRST_FILE"/>
</category>
<category name="com.test.oranges" additivity="false">
<priority value="DEBUG"/>
<appender-ref ref="SECOND_FILE"/>
</category>
<!-- =============================================================== -->
<!-- default -->
<root level="WARN">
<appender-ref ref="FIRST_FILE" />
<appender-ref ref="SECOND_FILE" />
</root>
Sorry, ich vergaß zu erwähnen, ich eine XML-Konfigurationsdatei haben. Was ist das Äquivalent in XML? log4j.logger.com.mycorp.project.first = DEBUG, FIRST – Csaba
Siehe meine aktualisierte Antwort. Möge es für dich nützlich sein! –
Ich habe zwei Fragen dazu: 1. Wenn der Unterschied zwischen Appendern nur der Dateiname ist, gibt es eine Möglichkeit, die gemeinsamen Eigenschaften einmal (XML) zu definieren, um Redundanz zu vermeiden? 2. Ist es möglich, einen Logger mehreren Paketen zuzuordnen? – clicky