configure log4j to log to custom file at runtime

后端 未结 4 431
逝去的感伤
逝去的感伤 2020-11-28 02:40

Can anyone please guide me as to how I can configure log4j to log to a specific file that I specify at run-time.The name and path of the log file are generated at run-time a

相关标签:
4条回答
  • 2020-11-28 02:56

    Can be also done by this properties define in log4j.properties file

    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
    
    0 讨论(0)
  • 2020-11-28 02:59

    Working and same has been tested

    // 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);
    
    0 讨论(0)
  • 2020-11-28 03:02

    Adapted from the log4j documentation:

    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");
       }
    }
    
    0 讨论(0)
  • 2020-11-28 03:05

    You can also do this from the log4j.properties file. Using the sample file below I have added the system property ${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
    

    The log file name can then be set two different ways:

    1. As a command line, system property passed to java "-Dlogfile.name={logfile}"
    2. In the java program directly by setting a system property (BEFORE you make any calls to log4j).

      System.setProperty("logfile.name","some path/logfile name string");

    0 讨论(0)
提交回复
热议问题