使用SLF4j / log4j将日志存储到.log文件中

时间:2010-10-19 10:02:05

标签: log4j slf4j

我正在使用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文件中。??

2 个答案:

答案 0 :(得分: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-log4j12个jar

  • 确保log4j.properties在类路径

希望这有帮助。

答案 1 :(得分:1)

确保只与一个日志框架绑定。如果您有多个日志记录框架jar,那么您可能 NOT 看到输出。

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

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