티스토리 뷰
Log4J를 사용하기 위해서 Jar파일을 필요로 한다.
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.0.RELEASE</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> <scope>runtime</scope> </dependency> </dependencies>
Log4j Listener를 등록한다 ( web.xml )
<pre class="brush: xml;"> <!-- log4J --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log/log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> </pre>
Log4j 의 내용을 출력하는 Config 파일은 3가지 방법이 있다.
1. 자바 소스로 직접 기술하는 방법
2. Properties 파일을 작성하여 사용하는 방법
3. xml 파일로 작성하여 사용하는 방법
Xml 파일로 작성하는 Log4j 설정 방법은 아래와 같다.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 콘솔 로그 --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%c{5}] %m [%X{userId}]%n" /> </layout> </appender> <!-- 날짜별 로그 파일 생성 --> <appender name="rollingFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/LOG/all.log"/> <param name="Append" value="true"/> <!-- param name="MaxFileSize" value="100MB"/ --> <!-- param name="MaxBackupIndex" value="2"></param --> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%C{10}] %m [%X{userId}]%n" /> </layout> </appender> <!-- 날짜별 로그 파일 생성 --> <appender name="springFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/LOG/spring.log"/> <param name="Append" value="true"/> <!-- param name="MaxFileSize" value="100MB"/ --> <!-- param name="MaxBackupIndex" value="2"></param --> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%C{10}] %m [%X{userId}]%n" /> </layout> </appender> <!-- 날짜별 로그 파일 생성(에러만) --> <appender name="errFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="ERROR"/> <param name="File" value="/LOG/error.log"/> <param name="Append" value="true"/> <!-- param name="MaxFileSize" value="100MB"/ --> <!-- param name="MaxBackupIndex" value="2"></param --> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %5p [%C{1}] %m [%X{userId}]%n" /> </layout> </appender> <!-- 특정 패키지 출력 설정 --> <logger name="org.apache.ibatis"> <level value="DEBUG"/> </logger> <logger name="org.springframework"> <level value="DEBUG"/> <appender-ref ref="springFile" /> </logger> <logger name="java.sql"> <level value="DEBUG"/> </logger> <!-- 기본 출력 설정 --> <root> <level value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="errFile"/> <appender-ref ref="rollingFile"/> </root> </log4j:configuration>
properties 파일로 설정하는 방법은 아래와 같다.
log4j.rootLogger=DEBUG, file, stdout log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=/LOG/prop.log log4j.appender.file.Append=true log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d %p [%C{10}] %m [%X{userId}]%n 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 %p [%C{10}] %m [%X{userId}]%n
1. Logger
- 특정 대상에 대한 로그 출력
- appender-ref 를 통해 해당 appender 참조
- 애플리케이션 별로 정의하고 로그 레벨과 Appender 지정
- Level
로그 레벨 |
설명 |
fatal |
아주 심각한 에러가 발생한 상태 |
error |
요청을 처리하는 중 문제가 발생한 상태 |
warn |
처리 가능한 문제, 향후 에러의 원인이 될 수 있는 경고 메세지 |
info |
로그인, 상태 변경과 같은 정보 메세지 |
debug |
개발 시 디버그 용도로 사용한 메세지 |
trace |
신규 추가된 레벨로 디버그 레벨이 넘 ㅜ광범위한 것을 해결하기 위해서 좀 더 상세한 상태를 나타냄 |
2. Appender
- 출력 포맷 설정
- Threshold, File, Append
- DatePattern
형식 |
설명 |
'.'yyyy-MM |
매달 시작 일에 로그 파일 변경 |
'.'yyyy-ww |
매주 시작 일에 로그 파일 변경 |
'.'yyyy-MM-dd |
매일 자정에 로그 파일 변경 |
'.'yyyy-MM-dd-a |
자정과 정오에 로그 파일 변경 |
'.'yyyy-MM-dd-HH |
매 시간마다 로그 파일 변경 |
'.'yyyy-MM-dd-HH-mm |
매 분마다 로그 파일 변경 |
- Layout
형식 |
설명 |
%P |
debug, info, warn, error, fatal 등 priority 출력 |
%m |
로그 내용 출력 |
%d |
발생 시간 출력 |
%t |
발생 쓰레드의 이름 출력 |
%n |
개행 문자 출력 |
%c |
패키지 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5} |
%C |
클래스 명 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5} |
%F |
프로그램 파일 명 출력 |
%I |
로깅이 발생한 caller 의 정보 출력 |
%L |
로깅이 발생한 caller 의 라인 수 출력 |
%M |
로깅이 발생한 method 명 출력 |
%r |
애플리케이션 시작 이후 로깅이 발생한 시점의 시간 출력(millisecond) |
%x |
NDC 에 저장된 내용 출력 |
%X |
MDC 에 저장된 내용 출력 |
3. Root
- 기본적으로 출력 될 로그 출력
- appender-ref 를 통해 해당 appender 참조
'생활코딩 > Spring' 카테고리의 다른 글
웹 다운로드시 브라우저 별 한글 처리 (0) | 2014.08.13 |
---|---|
스프링 배우기 - Excel 문서 처리하기 (0) | 2014.04.01 |
스프링 배우기 - 다중 파일 업로드(MultipartHttpServletRequest 이용) (8) | 2014.03.20 |
스프링 배우기 - AOP 2 (2) | 2014.03.19 |
스프링 배우기 - AOP (0) | 2014.03.18 |
- Total
- Today
- Yesterday
- Excel
- 자바스크립트
- Spring
- jsonify
- summernote
- offline.js
- @Temporal
- Spring Boot
- GO1104 LED
- log4jdbc
- AngularJS
- RollingFileAppender
- @Access
- java
- telegram bot
- spring jpa
- static resources
- 오프라인 확인
- mybatipse
- 한성키보드
- 정적 파일
- AOP
- 스프링 부트
- 초대장
- learning javascript
- jQuery 삽입
- WYSIWYG
- 쿼리 로그
- 브라우저 콘솔
- bootstrap
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |