IT/WEB

[JAVA] log4j.properties를 이용한 로그 별도 관리(info, error 로그 분리)

오달달씨 2022. 6. 28. 14:49
728x90
반응형
# Root logger option
log4j.rootLogger=info, file, stdout
 
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/data/mmsgoam/logs/oam/donemgr/new_donemgr.log
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=20
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

기존에 쓰던 log4j.properties다.

현재의 로그들은 new_donemgr.log에 기록하고 있었는데, info 로그와 별개로 error로그를 다른 로그파일로 관리할 수 있으면 좋겠다는 사용자의 요청이 들어왔다.

# Root logger option
log4j.rootLogger=info, file, stdout
log4j.logger.error=error, err
 
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/data/mmsgoam/logs/oam/donemgr/new_donemgr.log
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=20
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Direct log messages to a log file
log4j.appender.err=org.apache.log4j.RollingFileAppender
log4j.appender.err.File=/data/mmsgoam/logs/oam/donemgr/new_donemgr_err.log
log4j.appender.err.MaxFileSize=50MB
log4j.appender.err.MaxBackupIndex=20
log4j.appender.err.layout=org.apache.log4j.PatternLayout
log4j.appender.err.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

요청대로 수정한 log4j.properties 이다.

lgo4j.rootLogger 외에도 logger 객체를 만들어야한다.

현재 자바 소스 로그들은 일반적으로 log4j.rootLogger의 객체에 담긴다.

사용자의 요청에 따라 error가 발생한 경우 로그를 따로 관리해 생성해야 한다.

이런 경우 단순히 config파일 수정만으로 로그를 따로 관리 할 수 없다.

private static Logger logger = Logger.getLogger(DoneMsgScheduler.class);

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
	................
        
	logger.info("DoneMsgScheduler: Excute Scheduler. logTime: " + logTime);
		
	try {
        
	} catch (IOException e) {
		logger.error(e.getMessage(), e);
	}
}

기존의 JAVA 소스

private static Logger logger = Logger.getLogger(DoneMsgScheduler.class);
private static Logger errLogger = Logger.getLogger("error");

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
	................
        
	logger.info("DoneMsgScheduler: Excute Scheduler. logTime: " + logTime);
		
	try {
        
	} catch (IOException e) {
		errLogger.error(e.getMessage(), e);
	}
}

변경한 소스...

log4j.logger.error=error, err 는

log4j.logger.{소스에 세팅 된 logger 명} = {logger 레벨}. {logger 객체 명} 이다.

 

[결과]

 

728x90
반응형

'IT > WEB' 카테고리의 다른 글

[Java] 배열에 요소 추가하기  (0) 2022.07.06
[Javascript] 자주쓰는 정규식  (0) 2022.07.06
인터셉터  (0) 2022.06.26
swagger ui 추가하기 API 설명 웹 페이지  (0) 2022.06.20
[JAVA] 환경변수 값 불러오기 System.getenv()  (0) 2022.06.10