我正在用Java编写REST服务(在Tomcat 9上使用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 )中。
如何通过整个项目仅使用一个属性来解决此问题?
谢谢
答案 0 :(得分:1)
您需要分别在配置文件中定义记录器,并使用记录器在类文件中获取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