我有一個log4j2
記錄器配置,基本上將根記錄器的所有記錄寫入基本的記錄文件。我在這裏總是使用Logger.getRootLogger
。如何登錄到特定文件?
對於一些特定的事件我想記錄做一個不同的文件。我怎麼能在屬性文件中配置這樣一個記錄器(例如,給它一個名稱,然後我可以從代碼中引用)?
我有一個log4j2
記錄器配置,基本上將根記錄器的所有記錄寫入基本的記錄文件。我在這裏總是使用Logger.getRootLogger
。如何登錄到特定文件?
對於一些特定的事件我想記錄做一個不同的文件。我怎麼能在屬性文件中配置這樣一個記錄器(例如,給它一個名稱,然後我可以從代碼中引用)?
我終於發現了Marker
s爲的方式來路由消息:
What is markers in Java Logging frameworks and that is a reason to use them?
你可以做這樣的事情。
log4j.appender.transaction=org.apache.log4j.DailyRollingFileAppender
log4j.appender.transaction.DatePattern='.'yyyy-MM-dd
log4j.appender.transaction.File=logs/transaction.log
log4j.appender.transaction.layout=org.apache.log4j.PatternLayout
log4j.appender.transaction.layout.ConversionPattern=%d{dd MMM yyyy HH\:mm\:ss} %-5p %c{2}\:%L - %m%n
log4j.appender.transaction.threshold=info
log4j.logger.transaction=INFO, transaction
這是如何在代碼中使用的?我不希望所有的'INFO'事件都被這個記錄器記錄下來。只有特定的信息事件。我如何稱此記錄器? – membersound
'Logger transactionLog = Logger.getLogger(「transaction」);'我猜。 – Fildor
實際上,在log4j2中它是'LogManager.getLogger(「transaction」)''。更多細節在這裏:http://logging.apache.org/log4j/2.x/manual/migration.html –
http://logging.apache.org/log4j/2.x/manual/configuration.html你試過了嗎?您只需要爲每個文件定義腐爛級別O_o。 – xild
向我投票 - 真的不清楚你在問這個問題之前所研究的內容。它讓我覺得這是基本的功能,我可以想象這些手冊會詳細介紹嗎? –
我不想將特定級別的所有日誌記錄到某個文件中。請仔細閱讀。我想將同一級別的某些語句記錄到特定的文件中,而其他同級別的記錄應該使用rootlogger進入全局文件。 – membersound