code

런타임에 사용자 정의 파일에 기록하도록 log4j 구성

codestyles 2020. 12. 3. 07:51
반응형

런타임에 사용자 정의 파일에 기록하도록 log4j 구성


누구든지 내가 런타임에 지정한 특정 파일에 로깅하도록 log4j를 구성하는 방법에 대해 안내해 주시겠습니까? 로그 파일의 이름과 경로는 런타임에 생성되며 응용 프로그램은 해당 특정 파일에 로깅해야합니다.

일반적으로 log4j.properties 파일의 파일 어 펜더 항목은 응용 프로그램에서 사용할 로그 파일을 가리 키지 만이 경우 명령 줄에서 로그 파일 경로를 읽고 해당 파일에 기록하고 싶습니다.

이것을 어떻게 달성 할 수 있습니까?


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");
   }
}

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", "일부 경로 / 로그 파일 이름 문자열");


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

작동과 동일한 테스트를 거쳤습니다.

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

참고 URL : https://stackoverflow.com/questions/1324053/configure-log4j-to-log-to-custom-file-at-runtime

반응형