출처 : http://egloos.zum.com/oniondev/v/9585156

[Java] Log4j 설치부터 log4j.properties 설정 까지

http://oniondev.egloos.com/9585156

Log4j는 프로그래밍을 시작한 후로 언제부턴가 my favorite 로깅 Tool.? 이 되어버렷다.

일단 홈페이지 링크부터.. ㅎㅎ



Log4j 로깅을 사용하기 위해서는 일단 Java Project에 Log4j 라이브러리의 추가가 필요하다.
다음의 두가지 방법이 있다.

방법1. 홈페이지에서 다운로드 받은 JAR를 import

프로젝트 우클릭 > Build Path > Configure Build path > Libraries 탭 > Add External JARs > log4j-x.x.jar 선택 > 확인

방법2. Maven project를 사용한다면 라이브러리 dependency 추가

프로젝트의 pom.xml 오픈 > 여기 에서 원하는 버전의 dependancy 코드를 찾는다 > 파일에 추가후 저장 > 자동으로 import 됨.

내꺼 같은경우를 보면 다음과 같다.

pom.xml 내부

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

하지만..........  여기서 끝이 아니다!!!!
설정파일 이 있어야 log4j가 정상적으로 초기화되면서 사용이 가능하다.
이 설정파일은 xml과 properties 파일 2가지로 작성이 가능한데... 

원문의 자세한 설명을 보려면 홈페이지의 Configuration 항목을 체크하도록,,.

어쨋든 결론은 설정파일을 JavaProject의 CLASS_PATH 내부에 두어야 한다는 것.!!

Java 프로젝트 우클릭 > New > SourceFolder 생성(이름은 자유, 이 폴더 안에 위치한 파일은 프로그램이 Run할때 자동으로 CLASS_PATH에 추가가 된다.)

> 생성된 폴더 밑에 log4j.properties 라는 파일명으로 아래의 소스를 가져다가 붙인다.


<log4j.properties 파일 소스>

# Root logger option

#log4j.rootLogger=debug, stdout, logfile
log4j.rootLogger=info, stdout, logfile

# Direct log messages to stdout
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 (%C{2}:%L) - %m%n

# Direct log message to log file
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=D:\\path/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

간단히 설명을 하자면
1. 로그 출력 Level은 INFO부터 할것임.
2. rootLogger 에 사용할 로깅 Appender로 stdout이라는것과 logfile이라는 것 두가지를 사용하겠다
3. ConversionPattern은 로그가 어떠한 형식으로 출력될것인지 그 포맷을 정의하는 것.
4. logfile이라는 appender는 로그를 파일로 출력해주는 놈인데, 파일path를 정의 할 수 있다.

이정도면 다 알아 들으셨으리라 생각하고. 여기까지 따라했다면. 이제 프로그램을 만들어보자
MyClass라는 class파일을 만든 뒤 아래의 코드를 붙여넣고 돌려보자

public class MyClass {
    private final Logger logger = Logger.getLogger(MyClass .class);

    public void logTest(String msg){
       try{
          logger.info(msg);
       }catch(Exception e){
          logger.error("got error",e);
       }
    }

    public static void main(String[] args) {
MyClass obj = new MyClass();
obj.logTest("information");
    }
}

잘 동작하는가.?
콘솔의 로그가 아주 아름답게 잘 나오는 것을 확인할 수 있다.
정리 끝.!


+ Recent posts