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.
Changez le ConsoleAppender en FileAppender.
Je trouve que le org.Apache.log4j.RollingFileAppender
est 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.
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
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
la configuration suivante devrait également fonctionner
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
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