Log4j 定义多个记录器
Log4j define multiple loggers
我正在 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)。
如何通过对整个项目仅使用一个属性来解决此问题?
谢谢
您需要在每个配置文件中定义记录器,并使用相同的记录器在您的 class 文件
中获取 Logger
实例
例如
log4j.logger.A=,A
log4j.additivity.A=false
和您的 class 文件,按名称获取记录器
例如在class一个
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
我正在 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)。
如何通过对整个项目仅使用一个属性来解决此问题?
谢谢
您需要在每个配置文件中定义记录器,并使用相同的记录器在您的 class 文件
中获取Logger
实例
例如
log4j.logger.A=,A
log4j.additivity.A=false
和您的 class 文件,按名称获取记录器
例如在class一个
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