настроить log4j для входа в пользовательский файл во время выполнения - PullRequest
60 голосов
/ 24 августа 2009

Может кто-нибудь подсказать мне, как настроить log4j для входа в определенный файл, который я указываю во время выполнения. Имя и путь файла журнала создаются во время выполнения, и приложение должно регистрироваться в этом конкретный файл.

Обычно записи файла appender в файле log4j.properties указывают на файл журнала, который будет использоваться приложением. Однако в этом случае я хотел бы прочитать путь к файлу журнала из командной строки и записать в этот конкретный файл.

Как мне этого добиться?

Ответы [ 4 ]

95 голосов
/ 10 февраля 2011

Вы также можете сделать это из файла log4j.properties. Используя приведенный ниже пример файла, я добавил системное свойство $ {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

Имя файла журнала можно установить двумя разными способами:

  1. В командной строке системное свойство передается в java "-Dlogfile.name = {logfile}"
  2. В java-программе напрямую, установив системное свойство (ДО того, как вы сделаете какие-либо вызовы log4j).

    System.setProperty («logfile.name», «строка имени некоторого пути / файла журнала»);

59 голосов
/ 24 августа 2009

Адаптировано из документации 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");
   }
}
0 голосов
/ 02 мая 2017

Рабочая и такая же была проверена

// 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 голосов
/ 11 июля 2016

Также это можно сделать с помощью этих свойств, определенных в файле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...