Log4j定义了多个记录器



我正在用Java编写一个REST服务(在Tomcat9上使用JAX-RS标准(,我想在程序中添加日志,以便在调用时跟踪他的工作。

因此,我使用Log4j(1.2.17版(来编写日志,我想为REST服务上运行的每个服务编写一个不同的日志文件,但我只需要为整个应用程序使用一个Log4j属性

所以我想把这种日志放在我的日志文件夹中

--------------------------------
| Method | Log File            |
|------------------------------|
| /A     | MyRestService_A.log |
| /B     | MyRestService_B.log | 
--------------------------------

所以我把它写为Log4j的配置(restServiceLogger.properties(:

log4j.rootLogger=A,B
#/A
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=logs/MyRestService_A.log
log4j.appender.A.MaxFileSize=5MB
log4j.appender.A.MaxBackupIndex=5
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
#/B
log4j.appender.B=org.apache.log4j.RollingFileAppender
log4j.appender.B.File=logs/MyRestService_B.log
log4j.appender.B.MaxFileSize=5MB
log4j.appender.B.MaxBackupIndex=5
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n

然后在/A方法中,我用以下内容初始化记录器:

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("A");

然后在/B方法中,我用以下内容初始化记录器:

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("B");

问题是,当我写日志时,它们都写在/A日志文件中(MyRestService_A.log(。

如何通过对整个项目只使用一个属性来修复此问题?

谢谢

您需要在每个配置文件中定义记录器,并使用该记录器在类文件中获得Logger实例

例如

log4j.logger.A=,A    
log4j.additivity.A=false

和您的类文件,通过名称获取记录器

例如A类

Logger logger = Logger.getLogger("A");`

您的log4j.properties文件应该如下所示。

log4j.rootLogger=A,B
#/A
log4j.logger.A=,A
log4j.additivity.A=false
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=logs/MyRestService_A.log
log4j.appender.A.MaxFileSize=5MB
log4j.appender.A.MaxBackupIndex=5
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
#/B
log4j.logger.B=,B
log4j.additivity.B=false
log4j.appender.B=org.apache.log4j.RollingFileAppender
log4j.appender.B.File=logs/MyRestService_B.log
log4j.appender.B.MaxFileSize=5MB
log4j.appender.B.MaxBackupIndex=5
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n

最新更新