gpt4 book ai didi

log4j.properties FileAppender 文件名模式

转载 作者:行者123 更新时间:2023-12-01 10:34:43 25 4
gpt4 key购买 nike

我已经使用 slf4j/logback 一段时间了,我们在 logback.xml 中自定义的文件名是:

<timestamp key="ymd" datePattern="yyyyMMdd" />
<timestamp key="hms" datePattern="HHmmss" />
... ...
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/${ymd}/${HOSTNAME}-${USER}-${hms}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/var/log/${ymd}/${HOSTNAME}-${USER}-${hms}.%i.log</fileNamePattern>

现在我切换到 slf4j/log4j。如何在 log4j.properties 中使用相似的日志文件名模式?

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/var/log/${ymd}/${HOSTNAME}-${USER}-${hms}.log?

最佳答案

Log4J 2 ,等效配置 (log4j2.properties) 将是:

name = MyApp

property.ymd=$${date:yyyyMMdd}
property.hms=$${date:HHmmss}

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName =/var/log/${ymd}/${env:HOSTNAME}-${env:USER}-${hms}.log
appender.rolling.filePattern =/var/log/${ymd}/${env:HOSTNAME}-${env:USER}-${hms}.%i.log

appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n

appender.rolling.policies.type = Policies
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=1KB

rootLogger.level=debug
rootLogger.appenderRef.rolling.ref=RollingFile

您没有指定 logback 的触发策略,因此我使用了一个简单的 SizeBasedTriggerPolicy 来进行演示。

使用 Log4J 1 是不可能(至少据我所知)通过纯配置方式实现相同的目的,因此您将不得不求助于编程配置,例如:

//Parameters
String user = System.getenv("USER2");
String host = System.getenv("HOSTNAME");

Date now = new Date();
String day = new SimpleDateFormat("yyyyMMdd").format(now);
String time = new SimpleDateFormat("HHmmss").format(now);

//Filename pattern
String pattern = String.format("/var/log/%s/%s-%s-%s",day,host,user,time);

//Create a new RollingFileAppender instance
RollingFileAppender appender = new RollingFileAppender();
appender.setName("ROLLING");
appender.setFile(pattern+".log");

FixedWindowRollingPolicy policy = new FixedWindowRollingPolicy();
policy.setFileNamePattern(pattern+".%i.log");
policy.setMinIndex(1);
policy.setMaxIndex(5);
policy.activateOptions();
appender.setRollingPolicy(policy);

appender.setTriggeringPolicy(
new SizeBasedTriggeringPolicy(1000)
);

appender.setLayout(
new PatternLayout("%d %m%n")
);

appender.activateOptions();

//Attach it to the ROOT logger
Logger.getRootLogger().addAppender(
appender
);

请注意Log4J 1早在 2015 年就正式达到了“生命的尽头”:

On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life. For complete text of the announcement please see the Apache Blog. Users of Log4j 1 are recommended to upgrade to Apache Log4j 2

因此强烈建议升级到 2.X,除非出于某种原因不能选择。

关于log4j.properties FileAppender 文件名模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com