2011-12-12 197 views
6

我正在为我的应用程序日志创建一个解决方案,它有各种类型的日志记录(用户,应用程序等),希望将每种类型的日志保存在单独的文件中。多个log4j日志文件

这可能与log4j或其他API? 我怎么能这样做?

如果您认为有趣,我编辑问题并放置代码,但我认为它不值得,它们仍然非常基本。

在此先感谢。

+0

你是什么意思与不同类型的日志记录?日志级别(DEBUG,INFO,WARN ...)或者日志代码发生的不同类,或者你想要不同的日志文件,这取决于恰好碰巧运行代码的用户,或者你希望它通过线程不同名称? –

+1

[created-multiple-log-files-of-different-content-with-log4j]可能的重复(http://stackoverflow.com/questions/728295/creating-multiple-log-files-of-different-content- with-log4j) –

+0

@olly_uk我认为那不是重复的。 – caarlos0

回答

22

五言中,使用不同的FileAppenders 例来自互联网:

log4j.rootLogger=DEBUG 

# AdminFileAppender - used to log messages in the admin.log file. 
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 

log4j.appender.AdminFileAppender.File=admin.log 

log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

# ReportFileAppender - used to log messages in the report.log file. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 

log4j.appender.ReportFileAppender.File=report.log 

log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

log4j.logger.com.vaannila.admin=WARN,AdminFileAppender 
log4j.logger.com.vaannila.report=DEBUG,ReportFileAppender 

现在,您可以登录到admin.log Logger.getLogger("com.vaannila.admin").log("To admin log")和报告日志Logger.getLogger("com.vaannila.report").log("To report log")

+0

我不明白部分“Logger.getLogger(”com.vaannila.admin“).log(”要管理日志“)”,log4j如何知道我想记录AdminFileAppender,在那个例子中? 我尝试在这里做类似的事,但它不工作... – caarlos0

+1

log4j.logger.'com.vaannila.admin' =警告,AdminFileAppender这个属性说如果你登录到'com.vaannila.admin'或者'com.vaannila.admin.xxx.yyy.zzz'然后使用AdminFileAppender(这是FileAppender与文件'admin.log') – korifey

+0

嗯,现在它的工作。非常感谢,@ korifey,上帝保佑你。 – caarlos0

2

Log4j为Logger和Appenders提供。做到这一点的方法是为每个你想要的文件都有一个Appender。他们建立了一套适当的记录器,指向适当的Appender(s)。记录器通常使用软件包名称进行设置。如果这可以为​​你工作,程序包x中的代码会写入文件y,就这么做。否则,为每个输出文件创建记录器并让代码选择适当的记录器。您也可以使用记录器并将信息发送给多个Appender,以便您可以根据需要进行设置。

查看korifey的帖子,了解如何设置它的例子。