일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Nike
- GIT
- stockx.com
- react
- 나이키
- 자바스크립트
- 주식공부
- 리눅스
- 덩크 로우
- 제이쿼리
- 덩크 하이
- 파이썬
- 코로나19
- Dunk Low
- oracle
- dunklow
- draw
- 발매예정
- Github
- Linux
- JavaScript
- 오라클
- Python
- 드로우
- jQuery
- 주식
- dunk high
- 리액트
- sacai
- 덩크로우
- Today
- Total
Life goes slowly...
[Java] 자바 Log 유틸 - Apache Log4j 본문
Log 유틸 - Apache Log4j
컴퓨터 프로그래밍 언어를 작성하는 도중에 로그를 남기기 위해 사용되는 Java 기반 loging 유틸리티입니다. 대부분 디버그용 도구로 사용되고 있으며, 등급별로 FATAL, ERROR, WARN, INFO, DEBUG, TRACE 로그 레벨을 가지고 있으며 설정 파일에 대상별로 레벨을 지정이 가능하며 등급별로 저장하는 방식입니다.
개발자들이 개발 시 IDE 툴을 사용하여 디버깅을 하면 데이터 추적이 가능하지만 개발이 완료되고 컴파일 후에 서버에 반영후에는 데이터 추적하기가 어렵습니다. 버그를 추적할 수 있는 가장 편하고 좋은 방법이 로그를 남기고 추적하는 방법입니다.
Apache Log4j 구조
Logger(Category) |
로깅메세지를 Appender로 전달. logger는 로그 레벨을 가지고 있으며, 로그의 출력여부는 로그 문의 레벨과 로거의 레벨을 가지고 결정 |
Appender |
로그의 출력 위치를 결정(File, Console, DB) |
Layout |
Appender의 위치가 결정되었다면 출력 Layout을 결정 |
Apache Log4j 설정 파일
설정 파일은 xml 또는 properties로 설정이 가능합니다.
//properties 파일
# Log4j Setting file
log4j.rootLogger=INFO, console
# Daily file log
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=D:/Data/Log/data.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
# 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
# log level and appender
log4j.logger.name.of.the.package.one=DEBUG, console
log4j.logger.name.of.the.package.two=INFO, logfile
//log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 콘솔 로그 -->
<appender name="infoConsole" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%5p] %d{hh\:mm s} (%F\:%L) %c{1}.%M \: %m%n" />
</layout>
</appender>
<!-- root 설정 -->
<root>
<level value="INFO" />
<appender-ref ref="infoConsole" />
</root>
</log4j:configuration>
Log4j 설정 파일 Web.xml에 설정
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>
classpath:project/config/log4j.xml
</param-value>
</context-param>
<!-- Log4j -->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
Apache Log4j Level
FATAL |
아주 심각한 에러 발생한 상태. 일반적으로는 거의 사용되지 않음 |
ERROR |
요청을 처리 중에 문제가 발생한 상태 |
WARN |
처리는 가능하지만 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지 |
INFO |
로그인 및 상태 변경과 같은 정보성 메시지 |
DEBUG |
개발 시 디버그 용도로 사용되는 메시지 |
TRACE |
log4j1.2.12에서 신규 추가된 레벨 |
'프로그래밍 > Java' 카테고리의 다른 글
[Java] 자바에서 객체 정렬하기 - Comparable, Comparator (0) | 2020.10.17 |
---|---|
[Java] 자바의 폴더 생성 함수 - mkdir(), mkdirs() (2) | 2020.10.16 |
[Java] java.lang.NullPointerException 원인 그리고 해결방법 (0) | 2020.10.14 |
[Java] 자바 로직 분리 - DAO / DTO / VO (0) | 2020.10.14 |
[Java] 자바 - 현재 날짜,시간 조회하기 (0) | 2020.10.13 |
[Java] 자바 - 기본 정규식 표현 (0) | 2020.10.12 |
[Java] Java의 대소문자 변경함수 - toUpperCase(), toLowerCase() (0) | 2020.10.12 |
[Java] Struts2의 scheduler 시스템 - Quartz2 Library (0) | 2020.10.11 |