9

我正在使用 SLF4J,根据要求,我必须将日志存储到 .log 文件中。但是当我运行程序时,日志不会写入日志文件。

班级 :

import org.slf4j.Logger;   
import org.slf4j.LoggerFactory;   


public class TestSLF4J {   

//  private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class);   
    private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class);   



    public static void main(String[] args) {   
        logger .debug("Sample debug message"); 
logger .info("Sample info message"); 
logger .warn("Sample warn message"); 
logger .error("Sample error message");   
    }   
}   

log4j.properties

log4j.appender.file=org.apache.log4j.RollingFileAppender   
log4j.appender.file.maxFileSize=100KB   
log4j.appender.file.maxBackupIndex=5  
log4j.appender.file.File=C:/checkLog.log   
log4j.appender.file.threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout   
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n   
log4j.rootLogger=DEBUG,file

我可以在控制台上看到信息、警告、错误,但看不到调试值..!!

谁能帮我将日志存储到 checkLog.log 文件中。?

4

2 回答 2

9

我刚刚尝试了您提供的示例,它对我来说效果很好。我会检查/尝试几件事:

  • 检查您是否可以写入 C 的根目录: - 改为:

    log4j.appender.file.File=checkLog.log 
    

    登录到当前文件夹

  • 添加控制台记录器以查看它是否在控制台中工作:

    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout   
    log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    log4j.appender.file=org.apache.log4j.RollingFileAppender   
    log4j.appender.file.maxFileSize=100KB   
    log4j.appender.file.maxBackupIndex=5  
    log4j.appender.file.File=checkLog.log   
    log4j.appender.file.threshold=DEBUG
    log4j.appender.file.layout=org.apache.log4j.PatternLayout   
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    log4j.rootLogger=DEBUG,console,file
    

    运行应用程序时,您应该会在控制台和文件中看到日志记录。

  • 检查所有 sl4j 库是否都在路径中 - 您将需要slf4j-apislf4j-log4j12jars 在您的类路径中

  • 确保它log4j.properties在类路径上

希望这可以帮助。

于 2010-11-13T02:26:25.637 回答
1

确保您只绑定了一个日志框架。如果您有多个日志框架 jar,那么您可能不到输出。

我有类似的问题,然后发现,类路径slf4j-simple-1.7.5.jarlog4j.jar. 所以日志输出只写在控制台上。从类路径中删除第一个有帮助。

Also check console, you should be getting a warning/error message.

于 2013-06-20T06:58:55.503 回答