使用Log4J在同一个类中使用不同的Logger

Glo*_*tor 6 java log4j

我希望单独记录在同一个类中生成的特定消息.那么,如何在同一个类中创建2种不同类型的记录器.目前,Properties文件看起来像

log4j.rootCategory=DEBUG, O

# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

# File
log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender
log4j.appender.MESSAGE.File=target/logs/messages.log
# Control the maximum log file size
log4j.appender.MESSAGE.MaxFileSize=1000KB
# Archive log files (one backup file here)
log4j.appender.MESSAGE.MaxBackupIndex=100
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M           (%        F:%    L) - %m%n
log4j.appender.MESSAGE.

log4j.category.failedMessagesLog=INFO, MESSAGE
Run Code Online (Sandbox Code Playgroud)

我正在使用我的代码中的日志记录: - /**Logger.*/

Logger logger = Logger.getLogger(MyClass.class);
Logger msgLogger = Logger.getLogger("MESSAGE");
Run Code Online (Sandbox Code Playgroud)

经过测试,我得到一个空的日志文件(messages.log).有什么建议??

Pet*_*rey 9

创建两个具有不同名称的记录器.您可以基于每个名称配置它们.一种简单的方法是为您的类名添加后缀.例如

Log log1 = LogFactory.getLog(getClass().getName()+".log1");
Log log2 = LogFactory.getLog(getClass().getName()+".log2");
Run Code Online (Sandbox Code Playgroud)

在您的属性文件中.

log4j.category.mypackage.myclass.log1=INFO, MESSAGE1
log4j.category.mypackage.myclass.log2=INFO, MESSAGE2
Run Code Online (Sandbox Code Playgroud)


tej*_*lai 1

log4j.rootCategory=DEBUG, O

log4j.appender.O=org.apache.log4j.ConsoleAppender
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender
log4j.appender.MESSAGE.File=target/logs/messages.log
log4j.appender.MESSAGE.MaxFileSize=1000KB
log4j.appender.MESSAGE.MaxBackupIndex=100
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M


log4j.appender.**MESSAGE2**=org.apache.log4j.RollingFileAppender
log4j.appender.**MESSAGE2**.File=target/logs/**messages2**.log
log4j.appender.**MESSAGE2**.MaxFileSize=1000KB
log4j.appender.**MESSAGE2**.MaxBackupIndex=100
log4j.appender.**MESSAGE2**.layout=org.apache.log4j.PatternLayout
log4j.appender.**MESSAGE2**.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M    

log4j.category.failedMessagesLog=INFO, MESSAGE , **MESSAGE2**
Run Code Online (Sandbox Code Playgroud)

(INFO,MESSAGE, MESSAGE1)“failedMessagesLog”是应用appender的java文件。我刚刚重用了现有的RollingFileAppender. 您可以使用任何其他附加程序(如 fileAppender)。

您应该使用正确的类名Logger logger = Logger.getLogger(MyClass.class) 应更改为private static final Logger log = Logger.getLogger( **failedMessagesLog.class** )

确保您使用的是 log4j 的日志记录 ie

import **org.apache.log4j.Logger**;
Run Code Online (Sandbox Code Playgroud)