根据log4j2中的每小时在新目录中每天生成日志?
Generate Logs in a new directory daily according to each hour in log4j2?
我想创建一个目录 {date}.dir 并在这个目录中,我需要在一个新的单独文件中记录每小时的日志,如 0000.log、0100.log ...2300.log.
我使用了滚动文件追加器,但它只能创建一个日志文件并压缩最后一个文件。我正在使用间隔 = 1 的基于时间的触发策略,它每天给我一个新文件并压缩最后一天的文件。
<RollingFile name="eventLogger" fileName="/Log/webservices/linpub.log" filePattern="/Log/webservices/linpub-%d{MM-dd-yyyy}.log.gz">
<PatternLayout>
<Pattern>%d{MM/dd/yy HH:mm:ss.SSS} %-5p [%t] %c{1} %X{trioOperation} - %m %throwable %n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
我想创建一个名为 linpub-{date}.dir 的新文件,在文件中,每个小时应该有一个日志文件。
我使用的是 log4j2 2.3 版本。
如果是 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
,这里的 interval="1" 表示 1 天而不是 1 小时。如果你想达到 1 小时的基础,你必须使用 CronTrigger 基础策略。在下面找到代码。
<CronTriggeringPolicy schedule="0 0 0/1 1/1 * ? *" evaluateOnStartup="true"/>
用上面一行替换下面一行。
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
也用这个yyyy-MM-dd-HH
更改文件名patten,这样你就可以知道每小时的基础了。请检查并测试它。
请使用以下配置:
<appender name="dailyFileAppender"
class="org.apache.log4j.rolling.RollingFileAppender">
<param name="append" value="true" />
<param name="Threshold" value="INFO" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/temp/logs/Project-Name_%d{yyyy-MM-
dd-HH}.log" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p
%-10t [%-40.40c] %x - %m%n" />
</layout>
</appender>
我想创建一个目录 {date}.dir 并在这个目录中,我需要在一个新的单独文件中记录每小时的日志,如 0000.log、0100.log ...2300.log.
我使用了滚动文件追加器,但它只能创建一个日志文件并压缩最后一个文件。我正在使用间隔 = 1 的基于时间的触发策略,它每天给我一个新文件并压缩最后一天的文件。
<RollingFile name="eventLogger" fileName="/Log/webservices/linpub.log" filePattern="/Log/webservices/linpub-%d{MM-dd-yyyy}.log.gz">
<PatternLayout>
<Pattern>%d{MM/dd/yy HH:mm:ss.SSS} %-5p [%t] %c{1} %X{trioOperation} - %m %throwable %n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
我想创建一个名为 linpub-{date}.dir 的新文件,在文件中,每个小时应该有一个日志文件。
我使用的是 log4j2 2.3 版本。
如果是 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
,这里的 interval="1" 表示 1 天而不是 1 小时。如果你想达到 1 小时的基础,你必须使用 CronTrigger 基础策略。在下面找到代码。
<CronTriggeringPolicy schedule="0 0 0/1 1/1 * ? *" evaluateOnStartup="true"/>
用上面一行替换下面一行。
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
也用这个yyyy-MM-dd-HH
更改文件名patten,这样你就可以知道每小时的基础了。请检查并测试它。
请使用以下配置:
<appender name="dailyFileAppender"
class="org.apache.log4j.rolling.RollingFileAppender">
<param name="append" value="true" />
<param name="Threshold" value="INFO" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/temp/logs/Project-Name_%d{yyyy-MM-
dd-HH}.log" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p
%-10t [%-40.40c] %x - %m%n" />
</layout>
</appender>