【问题标题】:Retrieving slf4j log file in java在java中检索slf4j日志文件
【发布时间】:2015-10-02 12:17:59
【问题描述】:

我正在制作一个项目备份 java 应用程序,它需要创建一个邮件报告并每天发送。我的想法是生成正文消息,并将应用程序日志附加到电子邮件中。 我正在使用 slf4j 记录器,我不知道如何使用记录器自动检索日志文件路径。

使用普通的 log4j 似乎很容易,但我无法尝试从 slf4j 记录器中检索它。有人遇到过这个问题吗?

【问题讨论】:

    标签: java log4j slf4j


    【解决方案1】:

    最后这就是我所做的,它似乎工作正常。 任何评论或评论将不胜感激!

    private File getLogFile(){
        File file = null;
        Appender rightAppender = null;
        Enumeration<Appender> e = org.apache.log4j.Logger.getRootLogger().getAllAppenders();
        while(e.hasMoreElements()){
            Appender appender = (Appender)e.nextElement();
            if(appender instanceof FileAppender){
                rightAppender = appender;
            }
        }
        if(null != rightAppender){
            file = new File(((FileAppender)rightAppender).getFile());
        }
        return file;
    
    }
    

    【讨论】:

    • 这对我有用。谢谢!
    【解决方案2】:

    没有像 SLF4J 记录器这样的东西。 SLF4J 是另一个日志框架(log4j、commons-logging、java.util.Log 等)的外观。因此,SLF4J 记录器始终只是其中一个受支持框架中记录器的包装器。看看你是如何在下面配置记录器的。

    因此,在您的情况下,如果您将 slf4j 与 log4j 一起使用,请照常查阅您的 log4j.properties 或 log4j.xml 以查找您的日志所在的位置。如果你没有设置这些文件中的任何一个(或以其他方式初始化 log4j),你就没有日志。

    【讨论】:

    • 我当然做到了,我只是想自动从文件中检索它,而不是两次写入绝对路径,遵循低耦合...
    • @lateralus 为什么要两次?您只配置底层记录器,而不是 slf4j
    猜你喜欢
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多