当前位置: 首页 > 知识库问答 >
问题:

使用多个自定义滚动文件追加器时出现Log4j2问题

姬高澹
2023-03-14

我的log4j2属性文件如下所示-

当我试图使用以下代码访问appender时

private static final Logger LOGGER = LogManager.getLogger("ejdk");
LOGGER.info("test");

它将条目记录在SeriesIn响应appender中,而不是ejdk appender中。我的log4j2有多个自定义appender。我需要在不同的类文件中使用不同的appender,它应该将条目记录在正确的文件中。

rootLogger.level = WARN
appenders = sdw,ejdk,SeriesInResponse
rootLogger.appenderRefs = sdw
rootLogger.appenderRef.sdw.ref = RollingFile
appender.sdw.type = RollingFile
appender.sdw.name = RollingFile
appender.sdw.fileName=G:/ApplicationLogs/sdw_internal_server.log
appender.sdw.filePattern=G:/ApplicationLogs/sdw_internal_server-%d{yyyy-MM- 
dd}.log.zip
appender.sdw.layout.type = PatternLayout
appender.sdw.layout.pattern = %d{ISO8601} %-5p [%t] (%13F:%L) %3x - %m%n
appender.sdw.policies.type = Policies

 # Rotate log file each day and keep 60 days worth
appender.sdw.policies.time.type = TimeBasedTriggeringPolicy
appender.sdw.policies.time.interval = 1
appender.sdw.policies.time.modulate = true
appender.sdw.strategy.type = DefaultRolloverStrategy
appender.sdw.strategy.delete.type = Delete
appender.sdw.strategy.delete.basePath = ${application.log}
appender.sdw.strategy.delete.maxDepth = 1
appender.sdw.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.sdw.strategy.delete.ifLastModified.age = 30d

loggers = ejdk,SeriesInResponse

logger.ejdk.name = ejdk
logger.ejdk.level = INFO
logger.ejdk.additivity = false
logger.ejdk.appenderRef.ejdk.ref = RollingFile
appender.ejdk.type = RollingFile
appender.ejdk.name = RollingFile
appender.ejdk.fileName=G:/ApplicationLogs/sdw_internal_ejdk.log
appender.ejdk.filePattern=G:/ApplicationLogs/sdw_internal_ejdk.log-%d{yyyy- 
MM-dd}.log.zip
appender.ejdk.layout.type = PatternLayout
appender.ejdk.layout.pattern = %d{ISO8601} %-5p [%t] (%13F:%L) %3x - %m%n
appender.ejdk.policies.type = Policies

# Rotate log file each day and keep 60 days worth
appender.ejdk.policies.time.type = TimeBasedTriggeringPolicy
appender.ejdk.policies.time.interval = 1
appender.ejdk.policies.time.modulate = true
appender.ejdk.strategy.type = DefaultRolloverStrategy
appender.ejdk.strategy.delete.type = Delete
appender.ejdk.strategy.delete.basePath = ${application.log}
appender.ejdk.strategy.delete.maxDepth = 1
appender.ejdk.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.ejdk.strategy.delete.ifLastModified.age = 30d

logger.SeriesInResponse.name = SeriesInResponse
logger.SeriesInResponse.level = INFO
logger.SeriesInResponse.additivity = false
logger.SeriesInResponse.appenderRef.SeriesInResponse.ref = RollingFile
appender.SeriesInResponse.type = RollingFile
appender.SeriesInResponse.name = RollingFile
appender.SeriesInResponse.fileName=G:/ApplicationLogs/sdw_internal_series_responses.log
appender.SeriesInResponse.filePattern=G:/ApplicationLogs/sdw_internal_series_responses.log-%d{yyyy-MM-dd}.log.zip
appender.SeriesInResponse.layout.type = PatternLayout
appender.SeriesInResponse.layout.pattern = %d{ISO8601} %m%n
appender.SeriesInResponse.policies.type = Policies

# Rotate log file each day and keep 60 days worth
appender.SeriesInResponse.policies.time.type = TimeBasedTriggeringPolicy
appender.SeriesInResponse.policies.time.interval = 1
appender.SeriesInResponse.policies.time.modulate = true
appender.SeriesInResponse.strategy.type = DefaultRolloverStrategy
appender.SeriesInResponse.strategy.delete.type = Delete
appender.SeriesInResponse.strategy.delete.basePath = ${application.log}
appender.SeriesInResponse.strategy.delete.maxDepth = 1
appender.SeriesInResponse.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.SeriesInResponse.strategy.delete.ifLastModified.age = 30d

共有1个答案

陆绪
2023-03-14

您应该为附加程序使用不同的名称。

在您的配置中,一切都将转到“RollingFile”附件。

改变

appender.ejdk.name文件

appender.ejdk.name=RollingFileEjdk

logger.ejdk.appenderRef.ejdk.ref

记录器。ejdk。appenderRef。ejdk。ref=滚动文件ejdk

以类似方式更正其他Appander和AppenderRef。

 类似资料:
  • 我正在使用log4j2和滚动appender文件。我想使用自定义布局,但它不能正常工作。 我在JBoss工作。我已将具有cusotmize布局的lib放在libs目录中,因此它位于类路径中。 在log4j2.xml,我已经把以下配置: 但是没有正确记录! 提前谢谢 贾米拉

  • 这是我的log4j2.xml 我想实现每小时滚动的每日滚动文件,到目前为止,我还没有能够产生适当格式的日志,正如我所记得的,间隔参数似乎是按天而不是按小时递增。 我想实现这一点: 路由器。日志-- 路由器。日志2014-06-20-00 路由器。日志2014-06-20-01 ... 路由器。日志2014-06-20-23 路由器。日志2014-06-21-00 ... 相反,我做到了这一点: r

  • 类似地,我们如何在log4j2中创建自定义的appender,因为我们没有AppenderSkelton类要扩展,而所有其他appender都扩展AppenderBase类。

  • 在log4j.xml中追加内容: 如何在java中获取这些参数,并像在log4j2中的上述配置一样创建多文件追加器?请帮帮忙。多谢了。

  • 我创建了一个自定义追加器,但在运行测试时没有调用它。以下是这些属性的外观: 我的appender被称为WindowsEventLogappender。知道我的档案有什么问题吗?我看到了控制台测试消息,但没有看到来自我的appender的消息。现在我只是在我的自定义追加器中做一个system.out.println来验证它是否被调用。