comment écrire dans un fichier texte en utilisant log4j?

je me demande comment convertir le code suivant pour produire ces lignes dans un fichier texte, et non à la sortie standard:

import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;

public class HelloWorld {

    static final Logger logger = Logger.getLogger(HelloWorld.class);

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

Le fichier de propriétés est :

log4j.rootLogger=DEBUG, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%m%n

Merci.

22
demandé sur naXa 2010-12-17 23:49:24

5 réponses

changer le ConsoleAppender en FileAppender. Un fichier appender que je trouve utile est org.apache.log4j.RollingFileAppender. Vous aurez à ajouter une propriété pour le nom de fichier et peut vouloir définir le maxFileSize ainsi. Voici un exemple (mettez-les dans le log4j.les propriétés de fichier):

log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender
log4j.appender.NotConsole.fileName=/some/path/to/a/fileName.log
log4j.appender.NotConsole.maxFileSize=20MB

Il y a d'autres appenders. Daily rollingfileappender rolls basé sur le temps. FileAppender ne roule pas. Si vous utilisez le RollingFileAppender, devra faire une supposition comme une bonne valeur pour maxFileSize et puis adresse de la taille à une date ultérieure si elle est à l'origine de problèmes.

30
répondu DwB 2016-10-06 15:03:12

Utilisez bientôt FileAppender au lieu de ConsoleAppender.

Voici un exemple simple de configuration. Il configure également la mise en page. Vous pouvez l'omettre pour la première approche.

log4j.appender.F=org.apache.log4j.FileAppender
log4j.appender.F.File=mylog.log
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
6
répondu AlexR 2010-12-17 21:12:33

la configuration suivante devrait fonctionner avec aslo

envoyer directement les messages à stdout ###

log4j.appender.stdout=org.Apache.log4j.FileAppender

log4j.appender.la sortie standard stdout.fileName=error.journal

log4j.appender.la sortie standard stdout.layout=org.Apache.log4j.PatternLayout

log4j.appender.la sortie standard stdout.disposition.ConversionPattern=%d{absolu} %5p %c{1}:%L - %m%n

1
répondu Muhammad Abid 2012-12-07 20:53:50

# Define the root logger with file appender
log4j.logger.App = DEBUG ,CA

#set file text
log4j.appender.CA = org.apache.log4j.RollingFileAppender
log4j.appender.CA.File = D:\database.log
log4j.appender.CA.maxFileSize = 20MB
log4j.appender.CA.MaxBackupIndex=10
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
0
répondu Thailand 2016-11-18 11:05:06

suivantes seraient utiles:

classe contenant la méthode principale

    package abc;

    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;

    public class ClassOne {
        static Logger logger = Logger.getLogger(ClassOne.class);

        public static void main(String[] args) {
             PropertyConfigurator.configure("log4j.info"); //log4j.info file should be in the class path(same location as ClassOne.class)

             logger.info("Program started.... "); //Whenever you want to write something to the log text file use logger.info("Log Message")

        }
    }

log4j.info le fichier

   log4j.rootLogger=INFO, FILE

   # Define the file appender
   log4j.appender.FILE=org.apache.log4j.FileAppender // Replacing ConsoleAppender with FileAppender gives text file logging

   # Set the name of the file
   log4j.appender.FILE.File=src/abc/log.out //Here you can specify either absolute or relative path

   # Set the immediate flush to true (default)
   log4j.appender.FILE.ImmediateFlush=true

   # Set the threshold to debug mode
   log4j.appender.FILE.Threshold=debug

   # Set the append to false, overwrite
   log4j.appender.FILE.Append=false

   # Define the layout for file appender
   log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
   log4j.appender.FILE.layout.conversionPattern=%d %m%n
0
répondu harshainfo 2018-06-04 17:55:46