Im mit folgenden Abhängigkeiten mit log4j2:Log4j2 AsyncLogger mit Roll Datei appender nicht Datei Zeilennummer zeigt
<!-- LOG4J2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.0.1</version>
</dependency>
Log4j2.xml Inhalt:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
</Console>
<!-- Generate rolling log for router with per hour interval policy -->
<RollingFile name="ProcessorRollingFile" fileName="D:/ocsprocessor.log"
filePattern="D:/ocsprocessor.log.%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
</Policies>
<DefaultRolloverStrategy max="24" />
</RollingFile>
<!-- Register Async appender -->
<Async name="AsyncRollingFile">
<AppenderRef ref="ProcessorRollingFile" />
</Async>
</Appenders>
<Loggers>
<AsyncLogger name="com.tritronik.logger.log4j2" level="error"
additivity="false">
<AppenderRef ref="AsyncRollingFile" />
</AsyncLogger>
</Loggers>
</Configuration>
herausstellen, dass alles ging außer dem Protokoll feinen doesn zeige nicht die Nummer des geworfenen Loggers an (das% L im Muster).
Ich googelte und fand heraus, dass für Async Logger und Rolling File Appender niemand mit% L erwähnt wird, also wie kann ich es dann erreichen? Oder unterstützt es% L nicht?
Edit: Ich habe versucht, hinzugefügt includeLocation = "true", aber immer noch dieselben Ergebnisse
2014-05-23 11:42:40,368 [threadPoolTaskExecutor-5] ERROR (AsyncLogger:) - THIS IS TEST MESSAGE FOR LOGGING TEST PURPOSE
Dank
Danke !!! Es funktioniert .. Aber ähm, wie ist async appender ein Nein Nein neben asyn Logger? – Lynx777
Wenn sich Ihre Anwendung bei einem asynchronen Protokollierer anmeldet, werden im Wesentlichen nur Protokollereignisse in eine Warteschlange (den LMAX-Disruptor) gestellt. Ein separater Thread nimmt die Ereignisse aus der Warteschlange und sendet sie an den Appender. Wenn der Appender asynchron ist, wird das Ereignis erneut in eine Warteschlange eingereiht. Schließlich nimmt der Thread des asynchronen Appenders das Ereignis aus dieser Warteschlange und schreibt in die Datei. Also ist einer von ihnen unnötig. AsyncLoggers sind viel schneller, also würde ich empfehlen, den async Appender zu entfernen. Wenn Sie beides behalten, brauchen Sie auch includeLocation für beide (nicht sicher, ob das funktionieren würde, nicht getestet ...) –