配置slf4j/log4j输出到不同的文件
在实际中,我们可能想要将不同类型的日志分类输出到不同的文件中。
关于 log4j 的配置参数解释可以参考:
slf4j使用log4j的配置参数:
https://blog.****.net/yx0628/article/details/83214387
下面举个例子,比如我们可以进行类似以下的配置:
将 demo1.log ,demo2.log , demo3.log
system.logPath=D:/logs/
log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.demo1=INFO,demo1
log4j.appender.demo1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.demo1.File=${system.logPath}/demo1.log
log4j.appender.demo1.DatePattern='.'yyyy-MM-dd
log4j.appender.demo1.layout=org.apache.log4j.PatternLayout
log4j.appender.demo1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%n
log4j.logger.demo2=INFO,demo2
log4j.appender.demo2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.demo2.File=${system.logPath}/demo2.log
log4j.appender.demo2.DatePattern='.'yyyy-MM-dd
log4j.appender.demo2.layout=org.apache.log4j.PatternLayout
log4j.appender.demo2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%n
log4j.logger.demo3=INFO,demo3
log4j.appender.demo3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.demo3.File=${system.logPath}/demo3.log
log4j.appender.demo3.DatePattern='.'yyyy-MM-dd
log4j.appender.demo3.layout=org.apache.log4j.PatternLayout
log4j.appender.demo3.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} INFO - %m%n
在程序中,我们配置对应 logger 时,通过声明的 demo1 ,demo2 ,demo3 来获取 logger 对象。
public class LogTest {
private static Logger alogger = LoggerFactory.getLogger("demo1");
private static Logger blogger = LoggerFactory.getLogger("demo2");
private static Logger clogger = LoggerFactory.getLogger("demo3");
public static void main(String[] args) throws IOException {
alogger.info("aaaaaaa");
blogger.info("bbbbbbb");
clogger.info("ccccccc");
}
}
输出结果在 3 个文件中: