web-dev-qa-db-fra.com

comment écrire dans un fichier texte en utilisant log4j?

Je me demande comment convertir le code suivant en sortie de ces lignes dans un fichier texte et non en 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.

23
RanZilber

Changez le ConsoleAppender en FileAppender.

Je trouve que le org.Apache.log4j.RollingFileAppenderest utile . Si vous utilisez ceci, Vous devez ajouter une propriété pour le nom de fichier et Voudrez peut-être également définir maxFileSize . Voici un exemple (mettez-les dans le fichier log4j.properties):

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

Il existe d'autres appenders .DailyRollingFileAppender obtenus en fonction du temps .FileAppender ne lance pas . Si vous utilisez RollingFileAppender, Vous devrez deviner une valeur correcte pour maxFileSize et Ensuite, adressez la taille à une date ultérieure si cela pose problème.

32
DwB

Utilisez brièvement FileAppender au lieu de ConsoleAppender.

Voici un exemple simple de configuration. Il configure en outre 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
AlexR

Ce qui suit serait utile:

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")

        }
    }

Fichier log4j.info

   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
1
harshainfo

la configuration suivante devrait également fonctionner

envoyer des messages de journalisation vers stdout ###

log4j.appender.stdout = org.Apache.log4j.FileAppender
log4j.appender.stdout.fileName = error.log
log4j.appender.stdout.layout = org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =% d {ABSOLUTE}% 5p % c {1}:% L -% m% n

1
Muhammad Abid

dans log4j.properties

# 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
Thailand