Сохранение журнала в файл .log с использованием SLF4j / log4j - PullRequest
9 голосов
/ 19 октября 2010

Я использую 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 ]

9 голосов
/ 13 ноября 2010

Я только что попробовал приведенный вами пример, и он отлично сработал для меня. Есть несколько вещей, которые я бы проверил / попробовал:

  • Проверьте, можете ли вы написать в корень 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-api и slf4j-log4j12 банок на вашем пути к классам

  • Убедитесь, что log4j.properties находится на пути к классам

Надеюсь, это поможет.

1 голос
/ 20 июня 2013

Убедитесь, что у вас есть привязка только с одной структурой журналирования.Если у вас более одного jar каркаса логирования, вы можете NOT посмотреть вывод.

У меня была похожая проблема, затем я обнаружил, что путь к классу имеет slf4j-simple-1.7.5.jar и log4j.jar.Выходные данные журнала записывались только на консоли.Помогло удаление первого из пути класса.

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

...