同一个类中使用不同的日志记录器(Log4J)

6
我希望在同一个类中生成的特定消息可以分别记录。那么,如何在同一个类中创建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

我在代码中使用日志记录如下: /** 日志记录器。 */
Logger logger = Logger.getLogger(MyClass.class);
Logger msgLogger = Logger.getLogger("MESSAGE");

在测试过程中,我得到了一个空的日志文件(messages.log)。有什么建议吗?
2个回答

9

创建两个不同名称的日志记录器,可以根据名称对它们进行配置。一种简单的方法是在类名后添加后缀,例如:

Log log1 = LogFactory.getLog(getClass().getName()+".log1");
Log log2 = LogFactory.getLog(getClass().getName()+".log2");

在你的属性文件中。

log4j.category.mypackage.myclass.log1=INFO, MESSAGE1
log4j.category.mypackage.myclass.log2=INFO, MESSAGE2

记录器失败。Messagelogger = Logger.getLogger(myclass.class); - Global Dictator
尝试在静态上下文中创建记录器:Logger log1 = Logger.getLogger(MyClass.class.getName()+".log1"); - Darron

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**

“failedMessagesLog”是应用了appender(INFO,MESSAGE,MESSAGE1)的Java文件。 我刚刚重用了现有的RollingFileAppender。你可以使用任何其他的appender(比如fileAppender)。
你应该使用正确的类名Logger logger = Logger.getLogger(MyClass.class), 应该改为private static final Logger log = Logger.getLogger( **failedMessagesLog.class** )
确保你正在使用log4j的日志记录。
import **org.apache.log4j.Logger**;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接