gpt4 book ai didi

java - 使用 logback 附加程序查找日志文件

转载 作者:行者123 更新时间:2023-12-01 09:50:57 26 4
gpt4 key购买 nike

我正在构建一个跟踪日志文件的应用程序。为此,我读取 logback.xml 文件配置,按名称选择附加程序,并将文件的必要信息提取到尾部,以及其中消息的格式。

现在我只能跟踪具有设置文件名的日志文件,并且我正在尝试跟踪具有模式文件名的文件。但为了避免对每种可能的模式进行这种复杂的检查,我正在考虑从记录器类本身提取文件的值。经过调查,我发现RollingPolicyBase类有一个名为 getActiveFileName() 的方法,我怀疑它具有我需要的内容(调用该方法时日志文件的文件名),但由于某种原因,我什至找不到其名称的记录器。有人以前尝试过类似的事情,或者知道这是否可行?

我当前的日志(重要的部分):

<appender name="DateRollingFileAppender"     class="ch.qos.logback.core.rolling.RollingFileAppender">    
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/jwsgateway.%d{yyyyMMddHH}.log.zip</fileNamePattern>
<maxHistory>1500</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{dd/MM/yy HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %m%n </pattern>
</encoder>

我当前的代码:

private static ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(MyClass.class);
RollingFileAppender appender=(RollingFileAppender)logger.getAppender("DateRollingFileAppender");
filePath=appender.getRollingPolicy().getActiveFileName();

变量“appender”最终为空。有什么建议吗?

最佳答案

Logger#getAppender(String)获取当前附加到记录器的附加程序。由于 "DataRollingFileAppender" 已附加到根记录器,因此您需要调用 LoggerFactory#getLogger(String)Logger.ROOT_LOGGER_NAME获取包含您的附加程序的记录器:

import ch.qos.logback.classic.Logger;
import ch.qos.logback.core.rolling.RollingFileAppender;
import org.slf4j.LoggerFactory;

public class Main {
public static void main(String[] args) {
Logger logger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
RollingFileAppender appender=(RollingFileAppender)logger.getAppender("DateRollingFileAppender");
System.out.println(appender.getRollingPolicy().getActiveFileName());
}
}

关于java - 使用 logback 附加程序查找日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601993/

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