[英]log4j - on ERROR, log DEBUG?
我對log4j(v2)相對較新,但是我相信我已經用光了資源,因此我在這里提出我的問題。
我有一個可運行的log4j配置,我將在問題末尾附加該配置。 該應用程序使用cronjob每x分鍾運行一次。
我想看到的log4j行為如下:
我使用以下配置實現了1和2。 使用log4j是否也可以使用3號(如果不是,為什么呢?),如果可以,怎么辦?
當前配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RandomAccessFile name="LogFile" fileName="/var/log/fileA.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</RandomAccessFile>
<RandomAccessFile name="ErrorLogFile" fileName="/var/log/fileB.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</RandomAccessFile>
<SMTP name="MailError" subject="Error occurred" to="a@b.com" smtpHost="mail.foo.bar" from="b@c.net"/>
<Async name="Async">
<AppenderRef ref="LogFile"/>
</Async>
<Async name="Errors">
<AppenderRef ref="ErrorLogFile"/>
<AppenderRef ref="MailError"/>
</Async>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="Console" level="INFO"/>
<AppenderRef ref="Async" level="INFO"/>
<AppenderRef ref="Errors" level="ERROR"/>
</Root>
</Loggers>
</Configuration>
我認為您應該可以使用ThresholdFilter實現此目的。 將您的根記錄程序級別設置為TRACE,以便將所有事件發送到所有附加程序,然后在每個附加程序上放置不同的閾值過濾器。 log4j2手冊包含一個示例。
(編輯)在更好地理解了需求之后,我認為SMTP Appender已經滿足了您的需要:它在內部保留了觸發ERROR事件的事件(默認為512)的緩沖區。 這些先前的事件將包含在電子郵件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.