我正在尝试使用属性文件配置log4j2。我需要有多个滚动文件追加器来登录多个文件。但我似乎无法让多个滚动文件追加器工作。当我只使用一个滚动文件appender时,它似乎工作正常,并生成相应的日志文件。在多个appender的情况下,只有根记录器生成日志文件。
我目前的配置是: -
name = PropertiesConfig
status = warn
property.log-path = E:/logs
appenders = rolling
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender1
appender.rolling.fileName = ${log-path}/log1.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log1.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender2
appender.rolling.fileName = ${log-path}/log2.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender3
appender.rolling.fileName = ${log-path}/log3.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log3.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender4
appender.rolling.fileName = ${log-path}/log4.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log4.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender5
appender.rolling.fileName = ${log-path}/log5.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log5.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender6
appender.rolling.fileName = ${log-path}/log6.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log6.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender7
appender.rolling.fileName = ${log-path}/log7.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log7.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type=Policies
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
appender.rolling.type = RollingFile
appender.rolling.name = rolAppender8
appender.rolling.fileName = ${log-path}/log8.log
appender.rolling.filePattern = {log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log8.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false
loggers = rolling
logger.rolling.name = org.springframework
logger.rolling.level = fatal
logger.rolling.name = logger1
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender1
logger.rolling.name = logger2
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender2
logger.rolling.name = logger3
logger.rolling.level = info
logger.rlolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender3
logger.rolling.name = logger4
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender4
logger.rolling.name = logger5
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender5
logger.rolling.name = logger6
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender6
logger.rolling.name = logger7
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender7
rootLogger.level = info
rootLogger.appenderRefs = f
rootLogger.appenderRef.f.ref = rolAppender8
我是log4j2的新手,并不太了解它。任何帮助,将不胜感激。
答案 0 :(得分:0)
您需要为所有的appender使用不同的名称。现在它只是滚动。 它应该是......
appenders = rolling, rolling1, rolling2, .. so on
appender.rolling.type = RollingFile
appender.rolling1.type = RollingFile
appender.rolling2.type = RollingFile
这里rolling,rolling1,rolling2是不同日志的不同滚动appender。
所有滚动appender及其相应的其他属性的等等。我刚刚选择了一个属性'type'作为例子。
记录器也是如此。以及..
答案 1 :(得分:0)
我想您已经复制了一个在线教程的摘录代码,这可能是关于教如何滚动single file
而不是multiple files
的代码。如果是这样,请记住在您自己的代码中使用教程代码时要格外小心。
例如,查看rolling
中的appender.rolling.name = rolAppender2
。 rolling
术语指定此配置属于哪个附加程序,并且对于所有附加程序,每个Appender
必须具有唯一的术语而不是术语rolling
。
换句话说,尽管您通过为每个appender
使用唯一的名称来区分每个appender.rolling....
,但是对于每个附加程序仍使用appender.rollAppender1.type = RollingFile
appender.rollAppender1.name = rollAppender1
appender.rollAppender1.fileName = ${log-path}/log1.log
appender.rollAppender1.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log1.log
appender.rollAppender1.layout.type = PatternLayout
.
.
.
appender.rollAppender2.type = RollingFile
appender.rollAppender2.name = rollAppender2
appender.rollAppender2.fileName = ${log-path}/log2.log
appender.rollAppender2.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log2.log
appender.rollAppender2.layout.type = PatternLayout
.
.
.
loggers=RollLogger1,RollLogger2
logger.rolling1Logger.name = RollLogger1
logger.rolling1Logger.level = info
logger.rolling1Logger.additivity = false
logger.rolling1Logger.appenderRef.rolling.ref = rollAppender1
logger.rolling2Logger.name = RollLogger2
logger.rolling2Logger.level = info
logger.rolling2Logger.additivity = false
logger.rolling2Logger.appenderRef.rolling.ref = rollAppender2
.
.
.
。
因此,您的代码应类似于以下内容:
select="member[some $timeframe in role/timeframe satisfies $timeframe/xs:date(begin) le current-date() and ($timeframe/xs:date(end) gt current-date() or not($timeframe/end))]"
您还可以删除`