728x90
반응형
이미 잘 돌아가고 있는 스프링 프로젝트에 로그백을 추가하려고 한다.
1. 먼저 pom.xml에 필요한 라이브러리들을 등록
1) LOGBACK 라이브러리
- logback-classic
logback 은 logback-core, logback-classic, logback-access의 3개의 모듈이 있다.
core는 classic과 access의 공통라이브러리.
maven repository를 쓴다면 classic만 추가하면 관련 라이브러리가 추가 된다.
2) LOGBACK 관련 라이브러리
- logback-ext-spring
- jcl-over-slf4j
위에 3개의 dependency를 추가하면 자동으로 의존하는 라이브러리들로 logback-core, slf4j-api 를 받는다.
여기서 slf4j-api가 버전이 달라 충돌날 수 있으니, 예외로 하나는 제외해야겠다.
빼는 방법은 dependency 입력할 때 exclusions에 넣어 사용 가능
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.logback-extensions/logback-ext-spring -->
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.36</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
2. web.xml에 추가하기
param-value에 들어가는 경로는 본인 설정에 맞춰 수정해도 됨
<listener>
<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>classpath:config/logback.xml</param-value>
</context-param>
3. logback.xml 파일을 위에 설정한 위치에 생성
<?xml version="1.0" encoding="UTF-8"?>
<!--
[Layout]
%m : 로그내용이 출력
%p : trace > debug > info > warn > error 등의 priority 출력
%r : 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과시간을 밀리세컨드로 출력
%c : 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.
%n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다
%d : 로깅이벤트가 일어나 날짜 출력 ( 프로그램의 실행속도를 느리게 한다.)
예) %d{HH:mm:ss} 또는 %d{dd MMMM yyyy HH:mm:ss}
%C : 호출자의 클래스명 출력
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xyz.SomeClass 가 출력됩니다
%M : 로깅이 발생한 method 이름을 나타냅니다.
%F : 로깅이 발생한 프로그램 파일명을 나타냅니다.
%l : 로깅이 발생한 caller의 정보를 나타냅니다
%L : 로깅이 발생한 caller의 라인수를 나타냅니다
%x : 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다.
%X : 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.
%% : % 표시를 출력하기 위해 사용한다.
%t : 로그이벤트가 발생된 쓰레드의 이름을 출력합니다
-->
<configuration scan="true" scanPeriod="30">
<property name="LOG_PATH" value="/logs" />
<property name="LOG_FILE_NAME" value="log_logback" /
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%-5level] - %msg%n</Pattern>
</layout>
</appender>
<appender name="LOGFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%logger{20}.%method:%line]- %msg %n</pattern>
</encoder>
</appender>
<!-- logging level DEBUG <INFO <WARN <ERROR <FATAL. -->
<logger name="org.springframework" level="DEBUG" additivity="true"/>
<logger name="jdbc.sqlonly" level="DEBUG" additivity="false"/>
<root>
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="LOGFILE" />
</root>
</configuration>
728x90
반응형
LIST
'IT 웹개발 > 스프링(Spring)' 카테고리의 다른 글
[SpringBoot] 스프링부트 포트번호 변경 방법 (0) | 2022.03.29 |
---|---|
[SpringBoot] 이클립스에서 스프링부트 프로젝트 시작, 실행하기 (0) | 2022.03.23 |
[SpringBoot] 스프링 이니셜라이즈로 스프링부트 프로젝트 생성하기 (0) | 2022.03.21 |
[Spring] STS4 스프링 프레임워크 다운로드 설치 및 실행 (0) | 2022.02.04 |
[spring 에러] Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. (0) | 2022.01.15 |