【发布时间】:2015-10-02 12:17:59
【问题描述】:
我正在制作一个项目备份 java 应用程序,它需要创建一个邮件报告并每天发送。我的想法是生成正文消息,并将应用程序日志附加到电子邮件中。 我正在使用 slf4j 记录器,我不知道如何使用记录器自动检索日志文件路径。
使用普通的 log4j 似乎很容易,但我无法尝试从 slf4j 记录器中检索它。有人遇到过这个问题吗?
【问题讨论】:
我正在制作一个项目备份 java 应用程序,它需要创建一个邮件报告并每天发送。我的想法是生成正文消息,并将应用程序日志附加到电子邮件中。 我正在使用 slf4j 记录器,我不知道如何使用记录器自动检索日志文件路径。
使用普通的 log4j 似乎很容易,但我无法尝试从 slf4j 记录器中检索它。有人遇到过这个问题吗?
【问题讨论】:
最后这就是我所做的,它似乎工作正常。 任何评论或评论将不胜感激!
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;
}
【讨论】:
没有像 SLF4J 记录器这样的东西。 SLF4J 是另一个日志框架(log4j、commons-logging、java.util.Log 等)的外观。因此,SLF4J 记录器始终只是其中一个受支持框架中记录器的包装器。看看你是如何在下面配置记录器的。
因此,在您的情况下,如果您将 slf4j 与 log4j 一起使用,请照常查阅您的 log4j.properties 或 log4j.xml 以查找您的日志所在的位置。如果你没有设置这些文件中的任何一个(或以其他方式初始化 log4j),你就没有日志。
【讨论】: