Quelqu'un peut-il m'indiquer comment configurer log4j pour qu'il se connecte à un fichier spécifique que je spécifie au moment de l'exécution. Le nom et le chemin du fichier journal sont générés au moment de l'exécution et l'application doit se connecter à ce fichier particulier.
Généralement, les entrées de fichier appender dans le fichier log4j.properties pointent vers le fichier journal qui sera utilisé par l'application. Cependant, dans ce cas, j'aimerais lire le chemin du fichier journal à partir de la ligne de commande et le journaliser dans ce fichier particulier.
Comment puis-je atteindre cet objectif ?
Adapté de la documentation de log4j:
import org.Apache.log4j.Level;
import org.Apache.log4j.Logger;
import org.Apache.log4j.SimpleLayout;
import org.Apache.log4j.FileAppender;
public class SimpandFile {
static Logger logger = Logger.getLogger(SimpandFile.class);
public static void main(String args[]) {
// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new FileAppender(layout,"your filename",false);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
Vous pouvez également le faire à partir du fichier log4j.properties. En utilisant l'exemple de fichier ci-dessous, j'ai ajouté la propriété système $ {logfile.name} :
# logfile is set to be a RollingFileAppender
log4j.appender.logfile=org.Apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${logfile.name}
log4j.appender.logfile.MaxFileSize=10MB
log4j.appender.logfile.layout=org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n
Le nom du fichier journal peut ensuite être défini de deux manières différentes:
Dans le programme Java directement en définissant une propriété système (AVANT d'appeler log4j).
System.setProperty ("logfile.name", "nom de chemin/nom du fichier journal chaîne");
Fonctionnement et même a été testé
// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout();
RollingFileAppender appender = new RollingFileAppender(layout,"file-name_with_location",true);
appender.setMaxFileSize("20MB");
logger.addAppender(appender);
Peut aussi être fait par cette propriété définir dans le fichier log4j.properties
log4j.appender.logfile=org.Apache.log4j.RollingFileAppender
log4j.appender.logfile.maxFileSize=5000KB
log4j.appender.logfile.maxBackupIndex=5
log4j.appender.logfile.File=/WebSphere/AppServer/profiles/Custom01/error.log
log4j.appender.logfile.layout=org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %C %M %c{1}:%L - %m%n