log4j.properties:如何使用log4j將錯誤和信息消息分別記錄到系統日誌中?
# configure the root logger
log4j.rootLogger=INFO, SYSLOG
# configure Syslog facility LOCAL6 appender
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.threshold=INFO
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.facility=LOCAL6
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.conversionPattern="MyApp: %d\{ISO8601\}%m\n"
記錄器類
import org.apache.log4j.Logger;
public class Log4jAuditLogger {
private static Logger LOG = Logger.getLogger(Log4jAuditLogger.class);
public static void log(String message) {
LOG.info(message);
}
}
我想記錄的信息(這些審覈消息,我不希望在這裏記錄錯誤消息)消息到SYSLOG LOCAL6,和將錯誤消息(這些是java程序的內部錯誤消息)記錄到SYSLOG LOCAL7中。
我應該如何擴展這個類和配置文件來做到這一點?
我使用log4j 1.2。
不應該SYSLOG7附加器的門檻是錯誤?我如何選擇我想用的appender的Java代碼?只寫LOG.error就足夠了(「msg」); ?我想僅在SYSLOG中記錄信息消息,而僅在SYSLOG7中記錄錯誤消息。 – BlackCat
如果7只顯示ERROR消息(和更高),那麼只需設置Threahsold,是的。棘手的部分是6 ** **不顯示錯誤消息。你可以配置一個過濾器,但如果我沒有記錯的話,你需要改變爲xml config來使過濾器可用。 – Fildor
也許這是log4j 2中的解決方法,但在1.2中,您可以在不使用xml文件的情況下執行此操作。關鍵是真的是LevelMin和LevelMax過濾器。後來我意識到,如果我想擴展這個記錄器的附加功能,建議定義更多的記錄器。例如,當您需要根據其屬性將相同的嚴重級別日誌消息記錄到不同的設施中時。 – BlackCat