2010-10-19 25 views
8

J'utilise SLF4J et, conformément à l'exigence, je dois stocker les journaux dans le fichier .log. Mais quand je cours le programme les journaux ne sont pas écrits dans le dossier de fichier.Enregistrement du journal dans le fichier .log à l'aide de SLF4j/log4j

Classe:

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 

je peux voir les informations, mettre en garde, l'erreur sur la console mais pas la valeur de débogage .. !!

Quelqu'un peut-il m'aider à stocker le journal dans le fichier checkLog.log ??

Répondre

9

J'ai juste essayé l'exemple que vous avez donné et cela a bien fonctionné pour moi. Il y a plusieurs choses que je vérifierais/essayer:

  • Vérifiez si vous pouvez écrire à la racine de C: - écrire ceci:

    log4j.appender.file.File=checkLog.log 
    

    pour vous connecter au dossier en cours

  • Ajouter un enregistreur de la console pour voir si cela fonctionne dans la console:

    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 
    

    Lorsque vous exécutez le applicati Sur, vous devriez voir la connexion dans la console et dans le fichier.

  • Vérifiez que toutes les bibliothèques sl4j sont dans le chemin - vous aurez besoin slf4j-api et slf4j-log4j12 pots sur votre classpath

  • Assurez-vous que log4j.properties est sur le chemin de classe

Hope this helps.

1

Assurez-vous que vous avez une liaison avec un seul cadre de journalisation. Si vous avez plus d'un fichier jar de structure de journalisation, vous pouvez NOT voir sortie.

J'ai eu un problème similaire alors trouvé que, chemin de classe avait slf4j-simple-1.7.5.jar ainsi que log4j.jar. La sortie du journal était donc écrite uniquement sur la console. Enlever le premier du chemin de la classe a aidé.

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