log4j에서 사용하는 log 레벨은 여섯단계이다.
TRACE으로 설정하면 모든 레벨의 로그가 전부 기록되지만
FATAL으로 설정하면 FATAL보다 하위수준의 로그는 기록되지 않는다.
Log4j 설정
log4j를 사용하기 위해 pom.xml과 web.xml에 다음처럼 추가한다.
log4j를 사용하기 위해 pom.xml과 web.xml에 다음처럼 추가한다.
- Log4j Maven dependencies
- <dependencies>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>2.0-beta6</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.0-beta6</version>
- </dependency>
- </dependencies>
- Web.xml
<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/config/log4j.properties</param-value> </context-param>
log4j.properties
# Log4j Setting file log4j.rootLogger=INFO, console, logfile # Console log log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p %l - %m%n # Daily file log log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.File=${catalina.home}/logs/changpd.log log4j.appender.logfile.DatePattern='.'yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n # log level and appender log4j.logger.com.changpd=DEBUG, console log4j.logger.com.changpd.Test=INFO, logfile
log4j는 위처럼 text형식말고도 xml형식으로도 사용가능하다.
log4j.xml로 검색하면 쉽게 찾을수 있음.
# Log4j Setting file log4j.rootLogger=INFO, console
log4j 기본 설정이다.
기본적으로 INFO 수준 이상의 로그만 console을 통해 출력.
console에 대한 설정작업
파일로그
DailyRollingFileAppender는 일자별로 로그파일을 새로 맹그러 준다.
log4j.logger.[class_name]
위를 예로들면 changpd 이하의 클래스에서 INFO 이상일경우
rootloger에 의해 한번
위의 설정에서 한번
중복되서 출력이 되게 된다. (debug<info)
sql 로그 출력 - http://changpd.blogspot.kr/2016/08/log4j-sql.html
log4j 공식 사이트 : http://logging.apache.org/
머드초보님블로그 : http://mudchobo.tistory.com/251
수갈단산하자폭단님 블로그:http://scblood.egloos.com/3279715
기본적으로 INFO 수준 이상의 로그만 console을 통해 출력.
console에 대한 설정작업
# Console log log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p %l - %m%n마지막 아랫줄에서 사용하는 log4j 옵션의 설명은 아래와 같다.
%p debug, info, warn, error, fatal 등의 priority 가 출력된다. %m 로그내용이 출력됩니다 %d 로깅 이벤트가 발생한 시간을 기록합니다. 포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로 사용하며 SimpleDateFormat에 따른 포맷팅을 하면 된다 %t 로그이벤트가 발생된 쓰레드의 이름을 출력합니다. %% % 표시를 출력하기 위해 사용한다. %n 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다. %c 카테고리를 표시합니다 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다. %C 클래스명을 포시합니다. 예)클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xyz.SomeClass 가 출력됩니다 %F 로깅이 발생한 프로그램 파일명을 나타냅니다. %l 로깅이 발생한 caller의 정보를 나타냅니다 %L 로깅이 발생한 caller의 라인수를 나타냅니다 %M 로깅이 발생한 method 이름을 나타냅니다. %r 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds) %x 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다. %X 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.
파일로그
# Daily file log log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.File=${catalina.home}/logs/changpd.log log4j.appender.logfile.DatePattern='.'yyyy-MM-dd log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n로그는 appender에 의해 출력 방법이 결정된다. 위의 경우는 file로 출력하는 방법이고,
DailyRollingFileAppender는 일자별로 로그파일을 새로 맹그러 준다.
# log level and appender log4j.logger.com.changpd=DEBUG, console log4j.logger.com.changpd.Test=INFO, logfile특정 클래스에서 log4j를 다른 수준의 다른 형식으로 출력할 수 있다.
log4j.logger.[class_name]
위를 예로들면 changpd 이하의 클래스에서 INFO 이상일경우
rootloger에 의해 한번
위의 설정에서 한번
중복되서 출력이 되게 된다. (debug<info)
sql 로그 출력 - http://changpd.blogspot.kr/2016/08/log4j-sql.html
log4j 공식 사이트 : http://logging.apache.org/
머드초보님블로그 : http://mudchobo.tistory.com/251
수갈단산하자폭단님 블로그:http://scblood.egloos.com/3279715
좋은 정보 감사합니다!!
답글삭제