[백업][가리사니] java logback 을 사용하여 로그 남기기
java, maven
이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.
좀더 자세한 설명은 아래 주소 참고. /2016/07/24/%EB%B0%B1%EC%97%85-%EA%B0%80%EB%A6%AC%EC%82%AC%EB%8B%88-Spring-%EC%97%90%EC%84%9C-Logback-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0.html
로그백
- 사이트 : http://logback.qos.ch/
- 아직 실무에선 log4j 가 더 많이 쓰이지만 속도적으로 더 우세한 로거
pom.xml 설정
<logback.version>1.1.7</logback.version>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
- 변수 logback.version 을 만들고 싶지않다면, 직접 쓰셔도 상관없습니다.
- 다만 직접쓰면 관리가 불편해지지 권장하진 않습니다.
logback.xml 설정
일반적인 maven 프로젝트를 생성하면 아래처럼 2개의 소스폴더가 있습니다. src/main/java src/test/java 리소스로 사용할 소스폴더를 하나 더 만듭니다.
- src/main/resource가 처음부터 있다면 그대로 사용합니다.
- 오른쪽 클릭 -> new -> 소스폴더
- src/main/resource 로 만들어줍니다. 해당 리소스폴더에 logback.xml 를 만듭니다.
- 참고사항 : http://logback.qos.ch/manual/introduction.html
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="fileAppender" />
</root>
</configuration>
- 실행경로/log/yyyy-MM-dd.log 형식으로 로그파일을 작성
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n - 날짜시간 [쓰래드] 레벨 로거클래스 - 로그
- 예를들어 아래와 같이 출력됨
- 2016-06-20 10:00:00 [main] INFO maven.start.App - Hello world.
실행하기
- 적당한 클래스를 하나 만들어봅니다.
package maven.start;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
public class App
{
public static void main( String[] args )
{
// 로거 이용하기
Logger logger = LoggerFactory.getLogger(App.class);
logger.debug("Hello debug");
logger.trace("Hello trace");
logger.info("Hello info");
logger.warn("Hello warn");
logger.error("Hello error");
// 로거의 상태를 출력
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}
}
실행결과 - 프로젝트/log/날짜.log 2016-06-20 10:11:57 [main] DEBUG maven.start.App - Hello debug 2016-06-20 10:11:57 [main] TRACE maven.start.App - Hello trace 2016-06-20 10:11:57 [main] INFO maven.start.App - Hello info 2016-06-20 10:11:57 [main] WARN maven.start.App - Hello warn 2016-06-20 10:11:57 [main] ERROR maven.start.App - Hello error 실행결과 - 커맨드 (각종 설정 상태등이 출력됨)