Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 파이썬
- anaconda
- sqlMapClient
- select문
- sqldeveloper
- pl/sql
- pyqt
- spring
- 드라이브 연결
- Git
- pymssql
- sqlMapConfig
- Oracle
- 비교표현식
- JSP
- pagination
- directivesTag
- fastapi
- androidstudio
- sql
- form
- eclipse
- PYTHON
- ibatis
- DB 스케쥴러
- error
- mybatis
- javascript
- java
- form태그
Archives
- Today
- Total
기록하는 코더
[JAVA] Log4j 본문
Log4j
- Java application에서 로깅을 할 수 있도록 도와주는 Open source Project
- 로그 기록을 남기는 라이브러리
- log4J가 다른 로그 기록 라이브러리의 기본
- log기록을 파일에 남기려고 할 때
log4j를 사용하기 위해선
💡 설정파일은 둘 중 하나가 있어야한다! (properties파일 또는 log4j.xml)
Logger
- 로깅 정보를 캡쳐
- 로깅 메시지를 Appender에 전달
- Log4j의 핵심 클래스로 로그파일을 작성하고 관리하는 역할
Appender
- 로그 기록을 어디에 남길 건지(출력 위치 - 파일,콘솔,DB) 결정
- Logger로 부터 전달된 Logging 메세지를 어디에 출력 또는 저장할 것인지 결 정하는 역할
- ConsoleAppender, FileAppender, JDBCAppender, JMSAppender, SMTPAppender(이메일로 보내고 싶을때), SocketAppender, SyslogAppender
- DailyRollingFileAppender : 날짜 기준 NTEventAppender => NT(윈도우) 시스템 이벤트에 로그 전송
layouts
- 어떤 형식으로 출력할 것이지 출력 layout을 결정
로그 레벨 (Priority)
- FATAL : 가장 심각한 상황의 에러가 났을 경우 사용한다.
- ERROR : 일반적인 에러가 났을 때 사용한다.
- WARN : 에러는 아니나 주의가 필요한 경우 사용한다.
- INFO : 일반 정보를 나타낼 때 사용한다.
- DEBUG : 개발 시 프로그램 디버깅용 메시지를 출력해야 하는 경우 사용한다.
- TRACE : DEBUG 보다 낮은 레벨의 메시지 출력시 사용
- 우선순위 ( FATAL > ERROR> WARN > INFO > DEBUG > TRACE )
FATAL이 가장 높고 TRACE가 가장 낮다!
로그 메시지 출력하기
형식1)
Logger객체변수.로그레벨이름("출력할 메시지");
형식2)
Logger객체변수.log(Level.로그레벨, "출력할 메시지");
레벨설정에 따라우선순위가 설정한 레벨 그 이상인 것 모두 출력됨
log4j.properties
# Root logger option
# 1. 로그 출력 Level은 INFO부터 할것임.
# 2. rootLogger 에 사용할 로깅 Appender로 stdout이라는것과
# logfile이라는 것 두가지를 사용하겠다
#log4j.rootLogger=debug, stdout, logfile
log4j.rootLogger=info, stdout, logfile
# Direct log messages to stdout
# ConversionPattern은 로그가 어떠한 형식으로 출력될것인지
# 그 포맷을 정의하는 것.
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=%5p %-F(%C{2}:%L) - %m%n
# Direct log message to log file
# logfile이라는 appender는 로그를 파일로 출력해주는 놈인데,
# 파일path를 정의 할 수 있다.
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=D:/application.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n
log4j.appender.logfile.Append=true
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=D:/application.log
파일이름.날짜 형식 백업파일
log4j.appender.logfile.Append=true
로그기록을 뒤에 계속 추가해서 남김
Test Code
import org.apache.log4j.Logger;
public class LoggingTest {
// Logger객체 생성
static Logger logger = Logger.getLogger(LoggingTest.class);
public static void main(String[] args) {
// 로그 메시지 출력하기
// 형식1) Logger객체변수.로그레벨이름("출력할 메시지");
// 형식2) Logger객체변수.log(Level.로그레벨, "출력할 메시지")
// kr.or.ddit.basic. LoggingTest
logger.trace("이것은 trace레벨의 로그 메시지입니다.");
logger.debug("이것은 debug레벨의 로그 메시지입니다.");
logger.info("이것은 info레벨의 로그 메시지입니다.");
logger.warn("이것은 warn레벨의 로그 메시지입니다.");
logger.error("이것은 error레벨의 로그 메시지입니다.");
logger.fatal("이것은 fatal레벨의 로그 메시지입니다.");
}
}
'JAVA > library' 카테고리의 다른 글
[JAVA] ibatis (0) | 2023.01.15 |
---|