Java Log4j定义多个记录器

Java Log4j定义多个记录器,java,tomcat,log4j,Java,Tomcat,Log4j,我正在用Java编写一个REST服务(在Tomcat9上使用JAX-RS标准),我想向我的程序添加日志,以便在调用时跟踪他的工作 因此,我使用Log4j(版本1.2.17)来编写日志,我想为在REST服务上运行的每个服务编写不同的日志文件,但我只需要为整个应用程序使用一个Log4j属性 所以我想在我的日志文件夹中保存这种日志 -------------------------------- | Method | Log File | |-------------------

我正在用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):

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

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("A");
PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("B");
然后在/B方法中,我使用以下命令初始化记录器:

PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("A");
PropertyConfigurator.configure("conf/restServiceLogger.properties");
Logger log = Logger.getLogger("B");
问题是,当我写日志时,它们都写在/A日志文件(MyRestService_A.log)中

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


谢谢

您需要在每个配置文件中定义记录器,并使用相同的方法在类文件中获取
记录器
实例

e、 g

和类文件,按名称获取记录器

e、 g.在甲级

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

您需要在每个配置文件中定义logger,并使用相同的方法在类文件中获取
logger
实例

e、 g

和类文件,按名称获取记录器

e、 g.在甲级

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