본문 바로가기

개발/JAVA

log4j.properties 설정

반응형

Log4J 란?

- apache 진영에서 나온 오픈소스

- 로그 메시지를 콘솔, 텍스트파일, html파일, xml 파일, 이메일등으로 전송 가능

- Logger(category) : 로그 파일을 작성하는 클래스, Appender 에 메시지를 전달

- Appender : 로그를 출력하는 위치

                (ex)ConsoleAppender, FileAppender..

- Layout : Appender 로그를 생성하기 전에 메시지의 형식을 만드는 클래스

 

Log4J 설정파일

- log4j.properties(ç가장 사용하기 쉽고 직관적임)

- log4.xml

- java source

 

Logger -- 로깅레벨

- DEBUG < INFO < WARN < ERROR < FATAL

 

Appender Properties

u ConsoleAppender 옵션

    # Threshold = WARN, categorypriority  가 더 낮게 설정되어 있다 하더라도 여기에

                       명시된 priority 보다 낮은 메시지들은 로깅하지 않음

    # ImmediateFlush = true, 로그메시지가 버퍼되지 않음, 기본값은 true

    # Target = System.err, 기본값은 System.out

 
u FileAppender 옵션

   # Threshold = DEBUG

   # ImmdiateFlush = true

   # File = ./log/logfile.log, 로깅할 파일명

   # append = false, 기본값은 true 이며, 파일끝에 추가

 

u RollingFileAppender 옵션

    # Threadhold = WARN

    # ImmediateFlush = true

    # File = ./log/testlog.log

    # Append = false

    # MaxFileSize = 100KB(or MB, GB), 지정한 크기에 도달하면 로그파일을 교체

    # MaxBackupIndex = 5, 최대 5개의 백업파일을 유지

 

u DailyRollingFileAppender 옵션

    # Threadhold = WARN

    # ImmediateFlush = true

    # File = ./log/testlog.log

    # Append = false

    # DatePattern = ‘.’yyyy-mm, 매월 파일을 교체, 교체주기는 월, , ,시간,

 

Layout -- 표현식

%m = 로그 내용이 출력

%p = debug, info, warn, error, fatal 등의 우선순위를 출력

%r  = 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과

        시간을 밀리세컨드로 출력

%c = logger a.b.c 처럼 되어 있다면

[출처] Log4J.properties 설정|작성자 모카빵

# Log4j Setting file(DEBUG ~ FATAL, OFF 일 경우 로그 사용 안함), 사용 로그 이름(appender 이름)
log4j.rootLogger=INFO, console


# log level and appender
log4j.logger.com.some=DEBUG, console
log4j.logger.com.some.Any=INFO, logfile
log4j.additivity.com.some=false  // 상위 로거의 속성을 상속받지 않겠다.(중복 출력하지 않는다)


# 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.Append=true // restart 시 기존 파일에 추가, false : 새로 씀.
log4j.appender.logfile.Threshold=DEBUG // 이 appender 는 여기 명시된 priority 와 같거나 높은 메세지만 로깅한다
log4j.appender.logfile.ImmediateFlush=true // 로그메세지들이 전혀 버퍼되지 않는 것을 의미하며 대부분의 상황에 적당하다.
log4j.appender.logfile.File=./log_app.csv
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.MaxFileSize=300KB
log4j.appender.logfile.MaxBackupIndex=1 // 최대 파일이 넘어갔을 경우 백업
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n


# DB로그를 작성하기 위해서는 위와 같이 DB에 Table을 만들어야 한다
# jdbcappender.jar, ojdbc14.zip 파일 필요.

CREATE TABLE APP_LOG
(
  SYSTEMNAME  VARCHAR2(100 BYTE),
  LOGDATE     TIMESTAMP DEFAULT SYSDATE,
  LOGLEVEL    VARCHAR2(100 BYTE),
  MDC1        VARCHAR2(100 BYTE),
  MDC2        VARCHAR2(100 BYTE),
  MESSAGE     VARCHAR2(4000 BYTE),
  TROWABLE    VARCHAR2(4000 BYTE)
)

log4j.appender.dblog=org.apache.log4j.jdbcplus.JDBCAppender
log4j.appender.dblog.url=jdbc:oracle:thin:@127.0.0.1:1521:MCSDB // DB url 정의
log4j.appender.dblog.dbclass=oracle.jdbc.driver.OracleDriver  // DB 드라이버 클래스 정의
log4j.appender.dblog.username=sds     // DB User 정의
log4j.appender.dblog.password=sdsdb     // DB Password 정의
log4j.appender.dblog.sql=INSERT INTO APP_LOG( SYSTEMNAME, LOGDATE, LOGLEVEL, MDC1,MDC2, MESSAGE, TROWABLE ) values ('MCSMGR',TIMESTAMP '@TIMESTAMP@','@PRIO@','@MDC:APP@','@MDC:TSC@','@MSG@','@THROWABLE@') // INSERT SQL문 정의
log4j.appender.dblog.layout=org.apache.log4j.PatternLayout
log4j.appender.dblog.layout.ConversionPattern=%m
log4j.appender.dblog.buffer=1      // DB를 Update하기 전까지 SQL문의 Buffer 개수. 1이면 바로 Update 함
log4j.appender.dblog.commit=true     // commit 여부
log4j.appender.dblog.quoteReplace=true     // single quotes (')를 2 single quotes ('')로 변경 여부
log4j.appender.dblog.throwableMaxChars=3000    // throwable/exception stack trace의 최대 문자 개수 정의

반응형

자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!