我有一个log4j配置XML,它有多个文件追加器。 当我为我的应用程序构建一个新模块时,我想再包含一个文件appender并仅使用该文件。反正有吗?
我尝试使用Logger.getLogger(“MyAppender”); 但是在日志文件中,我应该得到类名.. 有了这个,我只得到日志文件中的appender名称。
我的appender配置就像这样。
” “
日志显示如下.. 2013年10月31日10:58:46,032 INFO MyAppender Hello World
但我需要
2013年10月31日10:58:46,032 INFO MyClass Hello World
答案 0 :(得分:0)
我想说你的要求是为你的新包结构使用不同的记录器(新模块中的那个)。
例如: - 如果新模块中使用的包结构是a.b. *,那么下面的属性文件将适合您的目的。
# Root logger option
log4j.rootLogger=INFO,stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to your file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#Package logger option
log4j.logger.a.b=INFO,file (see note 1)
log4j.additivity.a.b=false (see note 2)
注1: - 为新包定义新的记录器。在此包或子包下定义的任何类都将使用此记录器。阅读here以了解有关命名层次结构的更多信息。在您的java中,您可以使用
Logger logger = Logger.getLogger(yourClass)
注意2: - 关闭可加性,这样,日志只会在添加到记录器a.b的appender中打印。阅读here以了解有关可加性的更多信息。