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