簡體   English   中英

如何讓 log4j 也寫入控制台

[英]how to make log4j to write to the console as well

有什么方法可以告訴 log4j 將其日志寫入文件和控制台嗎? 謝謝,有我的屬性:

log4j.rootLogger=DEBUG,console,R
log4j.rootLogger=INFO, FILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

您的根記錄器定義有點混亂。 請參閱log4j 文檔

這是一個標准的 Java 屬性文件,這意味着行被視為鍵=值對。 您的第二個log4j.rootLogger行覆蓋了第一行,這解釋了為什么您在console appender 上看不到任何內容。

您需要將兩個rootLogger定義合並為一個。 看起來您正在嘗試將DEBUG消息發送到控制台,並將INFO消息發送到文件。 根記錄器只能有一個級別,因此您需要更改配置以使附加程序具有適當的級別。

雖然我還沒有驗證這是否正確,但我猜它看起來像這樣:

log4j.rootLogger=DEBUG,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender

請注意,您在大小寫方面也有錯誤 - 您在一個地方使用控制台小寫字母,而在另一個地方使用大寫字母。

您的 log4j 文件應該類似於下面的閱讀評論。

# Define the types of logger and level of logging    
log4j.rootLogger = DEBUG,console, FILE

# Define the File appender    
log4j.appender.FILE=org.apache.log4j.FileAppender    

# Define Console Appender    
log4j.appender.console=org.apache.log4j.ConsoleAppender    

# Define the layout for console appender. If you do not 
# define it, you will get an error    
log4j.appender.console.layout=org.apache.log4j.PatternLayout

# Set the name of the file    
log4j.appender.FILE.File=log.out

# Set the immediate flush to true (default)    
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode    
log4j.appender.FILE.Threshold=debug

# Set the append to false, overwrite    
log4j.appender.FILE.Append=false

# Define the layout for file appender    
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout    
log4j.appender.FILE.layout.conversionPattern=%m%n

這適用於調試模式下的控制台

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

編寫如下的根記錄器以同時登錄控制台和文件

log4j.rootLogger=錯誤,控制台,文件

並編寫各自的定義,如 Target、Layout 和 ConversionPattern(文件的 MaxFileSize 等)。

這就是我正在尋找基於命令行的工具的確切用例。 想要在控制台上顯示 INFO 但想要將更詳細的信息記錄到日志文件中。 經過各種建議,最后通過使用'log4j.appender.FILE.Threshold'來解決這個問題,如下所示:

log4j.rootLogger=DEBUG,CONSOLE,FILE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=output/log.log
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.FILE.Threshold=DEBUG

Brijendra Verma有正確的解決方案。 它為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM