1
根記錄器被配置爲INFO
級別的同步記錄器。我也有幾個Async記錄器。其中一個Async記錄器配置在定製的更高日誌級別TOAST
(789)。這高於TRACE
的水平(600)。log4j2中的自定義日誌級別問題
這樣做的原因是讓日誌級別可用於通過Async Logger和他們自己的appender記錄特殊事件。
我們不希望TOAST
事件要進入同步根記錄器或其他記錄器..但僅限於Async TOAST
記錄器及其相應的appender ..是否有可能?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="120" packages=「com.pack.toast」>
<CustomLevels>
<CustomLevel name=「TOAST」 intLevel=「789」 />
</CustomLevels>
<Appenders>
<RollingFile fileName="${sys:catalina.base}/logs/packiu.log"
append="true" name="DRFILE"
filePattern="${sys:catalina.base}/logs/packiu-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<Pattern>%d [%t] %c %M - %p: %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<RollingFile name="RollingFile" fileName="/Users/toasty/logs/roll_file_app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" immediateFlush="true" >
<PatternLayout>
<pattern>%m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
<Rewrite name="Rewrite" ignoreExceptions = "true" >
<ToastAppenderPolicy toastNeeded="true">
</ToastAppenderPolicy>
<AppenderRef ref="RollingFile"/>
</Rewrite>
</Appenders>
<Loggers>
<Logger name="net.rubyeye" level="off" />
<Logger name="com.google.code" level="off" />
<AsyncLogger name="com.pack.toast.ToastLoggerImpl" level=「TOAST」 includeLocation="true">
<AppenderRef ref="Rewrite" />
</AsyncLogger>
<Root level="info">
<AppenderRef ref="DRFILE" />
</Root>
</Loggers>
</Configuration>
感謝您的Info @ D.B。我完全按照概述完成了命名記錄器,但日誌消息仍然在兩個記錄器的輸出中結束,不幸的是..(同步根和異步命名記錄器)。以下是輸出到SYNC記錄器的示例 - 「2017-04-03 23:04:42,534 [http-nio-8443-exec-1] TOAST_LOGGER log - INFO:blah'。有什麼想法嗎?沒有自定義日誌級別,我很好,如果這種方法可以工作。謝謝 – user46743
我相信這可能是由於可加性。請參閱log4j2文檔的[additivity](https://logging.apache.org/log4j/2.x/manual/configuration.html#Additivity)部分,並在相應的記錄器上將additive設置爲false。我想在吐司記錄器上將它設置爲false應該是足夠的,因爲它說,「一旦事件到達記錄器,其addability設置爲false,事件將不會傳遞到它的任何父記錄器,無論它們的可加性設置如何「。 –
謝謝@ D.B。可加性似乎已經解決了值傳遞給父母的問題。 – user46743