Log4j不同任务的日志输出到不同的日志文件中

版权声明:本文为博主原创文章,转载必须标明出处.尊重他人就是尊重自己! https://blog.csdn.net/Dax1n/article/details/80846460

最近手中任务开发一个数据提取系统,目的是为了将原本手动提取数据的工作进行自动化,提高效率。用户每次可以提交一个job的配置信息到系统中进行数据计算,提取想到的数据。系统支持并行执行多个job,但是由于并行化执行导致原来的日志文件记录变的混乱,当数据提取存在问题时候 不便于诊断,因此如果可以更好的将每一个job的日志存储到单独的日志文件中则排错会高效很多。

如下将介绍如何实现,log4j的配置信息如下:

logdir=logs
log4j.rootLogger=INFO,File,CONSOLE
#info log
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=${logdir}/${logfilename}.log
log4j.appender.File.DatePattern=.yyyy-MM-dd
log4j.appender.File.Threshold=INFO
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
#console log
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

通过配置文件可以发现日志文件名字是一个占位符,我们可以在提交作业时候进行自动指定一个日志文件名字,指定方式就是使用-Dlogfilename=daxin.log这种传入系统属性的方式传入。idea调试传入时:


但是在我们系统中我们可以使用shell脚本传入日志文件名字即可。






猜你喜欢

转载自blog.csdn.net/Dax1n/article/details/80846460