configurer log4j pour se connecter au fichier personnalisé à l’exécution

Quelqu’un peut-il s’il vous plaît me guider sur la façon dont je peux configurer log4j pour se connecter à un fichier spécifique que je spécifie à 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 d’appender de fichiers dans le fichier log4j.properties pointent vers le fichier journal qui sera utilisé par l’application. Cependant, dans ce cas, je voudrais lire le chemin du fichier journal à partir de la ligne de commande et me connecter à ce fichier particulier.

Comment puis-je atteindre cet objective ?

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(Ssortingng 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 le fichier d’exemple 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 alors être défini de deux manières différentes:

  1. En tant que ligne de commande, la propriété système a été transmise à java “-Dlogfile.name = {logfile}”
  2. Dans le programme Java directement en définissant une propriété système (AVANT d’appeler log4j).

    System.setProperty (“logfile.name”, “some path / logfile name ssortingng”);

Peut aussi être fait par ces propriétés définies 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 

Travailler 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);