现在公司一个项目里面有好几个业务,比如几个webService,又有几个socket等,未来也会增加一些新的业务在里面,日志都打印在一个文件里面不够清晰。
是否有办法把不同业务日志,打印到不同日志文件?
可以根据不同的包名,配置日志文件地址
#输出com.yuan包下类的日志,debug级别,
log4j.logger.com.yuan=debug,yuan
#每日生成新的文件
log4j.appender.yuan=org.apache.log4j.DailyRollingFileAppender
log4j.appender.yuan.layout=org.apache.log4j.PatternLayout
log4j.appender.yuan.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %m%n
log4j.appender.yuan.Threshold=DEBUG
log4j.appender.yuan.ImmediateFlush=TRUE
log4j.appender.yuan.Append=TRUE
#日志路径
log4j.appender.yuan.File=./logfile/log4j-yuan.log
log4j.appender.yuan.Encoding=UTF-8
#输出com.li包下类的日志
log4j.logger.com.li=debug,li
#每日生成新的文件
log4j.appender.li=org.apache.log4j.DailyRollingFileAppender
log4j.appender.li.layout=org.apache.log4j.PatternLayout
log4j.appender.li.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %m%n
log4j.appender.li.Threshold=DEBUG
log4j.appender.li.ImmediateFlush=TRUE
log4j.appender.li.Append=TRUE
#日志路径
log4j.appender.li.File=./logfile/log4j-li.log
log4j.appender.li.Encoding=UTF-8
可以的,你自己定义一个日志类,用不同的方法实现打印到不同文件。
log4j2可以指定不同包中日志使用不同的appender,创建多个不同的规则,让不同包的日志打印到不同的日志文件里就可以了。
<appenders>
...
</appenders>
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.springframework" level="INFO"/>
<logger name="org.mybatis" level="INFO"/>
<!--设置com.xxxzzz.abab包下的日志使用abab_appender日志规则-->
<logger name="com.xxxzzz.abab" level="ALL" additivity="true">
<appender-ref ref="abab_appender"/>
</logger>
<root level="all">
<appender-ref ref="Console"/>
</root>
</loggers>