java 获取logback日志文件路径

2020-08-03 08:11|来源: 网路

在程序运行期间,读取logback日志文件内容进行特定业务操作,例如分析访问记录。通过LoggerFactory获取Logger上下文LoggerContext,再通过LoggerContext获取到Logger、Appender


获取logback日志文件的api,参考别人写的代码:

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (ch.qos.logback.classic.Logger logger : context.getLoggerList()) {
    for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) {
        Appender<ILoggingEvent> appender = index.next();
        if(appender instanceof FileAppender){
            FileAppender fileAppender = (FileAppender) appender;
            File file = new File(fileAppender.getFile());
            String canonicalPath = file.getCanonicalPath();
            System.out.println(canonicalPath);
        }
    }
}


如果要读取指定文件,可以直接获取FileAppender

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
ch.qos.logback.classic.Logger uaLogger = context.getLogger("userAccessLogger");
FileAppender<ILoggingEvent> uaAppender = (FileAppender)uaLogger.getAppender("userAccessAppender");
System.out.println(uaAppender.getFile());


相关问答

更多

java logback:我可以在写入新日志时附加自定义函数(java logback: can i attach a custom function whenever a new log is written)

当Logback(但想法也适用于Log4J)决定记录给定语句(基于日志记录级别和过滤器)时,他将ILoggingEvent发送到附加到给定记录器及ILoggingEvent的每个所谓的appender 。 你想要的是实现自己的appender(实现Appender或最好扩展AppenderBase的类 )并将其添加到你的logback.xml (简化): <root> <appender class="com.example.YourCustomAppender"/> </root> 正 ...

Logback使用哪个配置文件?(Which configuration file(s) is Logback using?)

托尼在评论中指出,使用-Dlogback.debug=true 。 然后显示出来: 15:14:22,155 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 15:14:22,156 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-te ...

Logback有时不写入日志文件,有时不会滚动日志文件(Logback sometimes does not write to the log file, and sometimes does not roll the log file)

要调试此问题,请使用<configuration debug="true">并且不要重定向stdout。 Logback将在解析配置和出现问题时在那里打印消息。 It turns out that this had very little to do with logback at all. The problem was that I had a .policy file that didn't specify the proper permissions for the application ...

logback SiftingAppender生成的日志文件无法删除,直到停止tomcat服务器(logback SiftingAppender generated log files cannot be deleted untill stop the tomcat server)

当我问这个问题时,以下是支持组中的logback支持建议的建议。 Mayuran, 您可以将FINALIZE_SESSION_MARKER添加到MDC以触发要清理的子追加器。 这在http://logback.qos.ch/manual/appenders.html中有记录 一旦你这样做,子appender进入延迟状态10秒,然后appender将关闭。 戴夫 The following is the suggestion suggested by logback support in there ...

Spring Boot,Tomcat访问在打包的应用程序中使用Logback配置文件记录日志(Spring Boot, Tomcat Access Log with Logback config file in a packaged application)

现在通过创建我自己的接受InputStream而不是文件名的SpringLogbackValve解决了问题。 它基本上是ch.qos.logback.access.tomcat.LogbackValve的克隆,只是使用Inputstream Inputstream inputStream而不是String fileName和以下方法: @Override public void startInternal() throws LifecycleException { executorServ ...

看不到log4j中的logback日志配置嵌入式Jetty应用程序[关闭](Can't see logback logs in log4j configured embeded Jetty application [closed])

请看看你需要哪些罐子 : 如果添加log4j-slf4j-impl-2.7.jar并删除logback jar,那么所有Logback日志记录都将包含在Log4j 2日志中。 我假设你已经在类路径中有了slf4j-api jar。 保留它,但用log4j-slf4j-impl-2.7.jar替换Logback jar。 Please take a look at which jars you need: If you add the log4j-slf4j-impl-2.7.jar and rem ...

Logback:如何获取日志文件路径?(Logback: How can i get the log file path?)

您可以在spring和logback之间共享属性文件。 或者您可以以编程方式访问context范围的logback属性。 或者你可以挖掘你的logback上下文来寻找appender。 logback.xml <configuration> <property scope="context" name="abc" value="xyz"/> </configuration> java的 import ch.qos.logback.classic.LoggerContext; publi ...

Logback使用基于大小的存档保留n天日志(Logback Keep n Days Logs With Size Based Archiving)

我在这里想要实现的是保留过去7天的所有日志, 在此处指定一种模式,该模式将滚动策略视为小时粒度: <fileNamePattern>${LOG_HOME}/appLog.%d{yyyy-MM-dd HH}.%i.log.gz fileNamePattern不仅仅是文件名模式。 它还表示翻转频率。 必需的fileNamePattern属性定义已滚动(已归档)日志文件的名称。 它的值应该包含文件名,以及适当放置的%d转换说明符。 %d转换说明符可以包含java.text.SimpleDateFor ...

使用logback自定义日志条目(Customized log entries using logback)

如果要将字段记录到日志文件中,则应使用MDC(映射诊断上下文)系统,它允许您将值放在将在记录时使用的映射中,可以在此处找到官方文档。 If you want to log the fields to your log file you should use the MDC(Mapped Diagnostic Context) system, it allows you to put the values in a map that will be used while logging, the o ...

在Java中,使用logback框架,是否有一种方法可以为繁琐的日志消息动态配置限制(In Java, using the logback framework, is there a way to dynamically configure throttling for a chatty log message)

如果消息完全相同,您可以使用“重复消息”过滤器查看。 http://logback.qos.ch/manual/filters.html#DuplicateMessageFilter 或者您可以使用评估程序筛选表达式: http : //logback.qos.ch/manual/filters.html#evalutatorFilter 像这样 <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator nam ...