0

我有一个 log4j 配置 XML,它有多个文件附加程序。当我为我的应用程序构建一个新模块时,我想再包含一个文件附加程序并仅使用该文件。有什么办法吗?

我尝试使用 Logger.getLogger("MyAppender"); 但是在日志文件中,我应该得到类名。这样我只得到日志文件中的附加程序名称。

我的 appender 配置是这样的。

" "

日志显示如下.. 31 Oct 2013 10:58:46,032 INFO MyAppender Hello World

但是我需要

2013 年 10 月 31 日 10:58:46,032 信息 MyClass Hello World

4

1 回答 1

0

我想说您的要求是为您的新包结构(新模块中的那个)使用不同的记录器。

例如:- 如果您的新模块中使用的包结构是 ab*,那么下面的属性文件将适合您的目的。

# 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:- 为新包定义一个新的记录器。在此包或子包下定义的任何类都将使用此记录器。阅读此处以了解有关命名层次结构的更多信息。在你的java中,你可以使用

Logger logger = Logger.getLogger(yourClass)

注意 2:- 关闭可加性,以便仅在添加到 logger abRead 的附加程序中打印日志了解有关可加性的更多信息。

于 2013-11-01T13:31:27.867 回答