반응형
Spring Boot : 2.2.7.RELEASE
log4jdbc : 1.16
logback-spring.xml
src/main/resources/logback-spring.xml
클래스패스 경로 밑의 logback.xml를 읽는다.
logback.xml이라고 해놓으면 스프링이 로드되기 전에 읽기 때문에 스프링 관련 설정값을 가져올 수 없다.
스프링 안에서 관리하고 싶다면 반드시 파일 이름을 logback-spring.xml으로 한다.
간단하게 설정한다면 application.yml 안에서 설정할 수 있다.
spring:
profiles: server
logging:
pattern:
console: "[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %M %logger{35} - %msg%n"
level:
org.springframework.web: error
java.sql: error
jdbc: off
jdbc.sqlonly: off
jdbc.sqltiming: error
jdbc.audit: off
jdbc.resultset: off
jdbc.resultsettable: error
jdbc.connection: error
spring:
profiles: dev
logging:
pattern:
console: "[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %M %logger{35} - %msg%n"
level:
org.springframework.web: debug
org.springframework.security: off
java.sql: error
jdbc: off
jdbc.sqlonly: off
jdbc.sqltiming: debug
jdbc.audit: off
jdbc.resultset: off
jdbc.resultsettable: debug
jdbc.connection: off
xml로 설정하려면 application.yml의 log 설정을 지워준다. 겹치면 설정이 섞이게 된다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %M %logger{35} - %msg%n" />
<springProperty name="ROOT_PATH" scope="context" source="config.gl_path_root" defaultValue="/"/>
<!-- yml의 설정값을 가져올 수 있다. socpe는 context로 설정했고, yml 안의 config.gl_path_root 값을 가져왔다. 해당 키값이 없을 경우 디폴트로 /를 사용한다. 밑에서 사용할 땐 ${ROOT_PATH} 처럼 사용한다. -->
<!-- 테스트 단계 콘솔로 로그를 남김 -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!-- 기본 로그 file appender -->
<appender name="basicFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ROOT_PATH}/logs/server.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${ROOT_PATH}/logs/%d{yyyyMMdd}/server.%d{yyyyMMdd}.%i.log</fileNamePattern>
<!-- 50MB를 초과하면 새로운 로그파일 생성. ex) server.200903.2.log -->
<maxFileSize>50MB</maxFileSize>
<!-- 60일이 지난 파일은 삭제한다-->
<!-- <maxHistory>60</maxHistory> -->
</rollingPolicy>
</appender>
<!-- 별도의 로그 파일을 분리하기 위한 file appender -->
<appender name="scheduleFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ROOT_PATH}/logs/schedule/photo_delete.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${ROOT_PATH}/logs/schedule/%d{yyyyMMdd}/photo_delete.%d{yyyyMMdd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<!-- <maxHistory>60</maxHistory> -->
</rollingPolicy>
</appender>
<!-- 프로필에 따라 다른 로거를 사용할 수 있다. -->
<springProfile name="server">
<logger name="com.xxx.xxx.scheduler.photo" level="info" additivity="false">
<appender-ref ref="scheduleFileAppender"/>
</logger>
<logger name="org.springframework.boot" level="error"></logger>
<logger name="org.springframework.web" level="error"></logger>
<logger name="org.springframework.security" level="off"></logger>
<logger name="java.sql" level="error"></logger>
<logger name="jdbc" level="off"></logger>
<logger name="jdbc.sqlonly" level="off"></logger>
<logger name="jdbc.audit" level="off"></logger>
<logger name="jdbc.resultset" level="off"></logger>
<logger name="jdbc.sqltiming" level="error"></logger>
<logger name="jdbc.resultsettable" level="error"></logger>
<logger name="jdbc.connection" level="error"></logger>
<root level="info">
<appender-ref ref="basicFileAppender" />
</root>
</springProfile>
<!-- 밑의 세 프로필에 대해서는 이 로거 설정을 사용한다.-->
<springProfile name="dev | develop | test">
<root level="info">
<appender-ref ref="consoleAppender" />
</root>
<logger name="org.springframework.boot" level="warn"></logger>
<logger name="org.springframework.web" level="debug"></logger>
<logger name="org.springframework.security" level="off"></logger>
<logger name="java.sql" level="error"></logger>
<logger name="jdbc" level="off"></logger>
<logger name="jdbc.sqlonly" level="off"></logger>
<logger name="jdbc.audit" level="off"></logger>
<logger name="jdbc.resultset" level="off"></logger>
<logger name="jdbc.sqltiming" level="debug"></logger>
<logger name="jdbc.resultsettable" level="debug"></logger>
<logger name="jdbc.connection" level="off"></logger>
</springProfile>
</configuration>
반응형
'Java > Spring' 카테고리의 다른 글
[Spring]WebClient 파라미터 인코딩 (1) | 2021.01.15 |
---|---|
[Spring][Transaction] 트랜잭션 제외하기, 트랜잭션 제외 안 될 때 (0) | 2020.09.07 |
SpringBoot ViewResolver 설정, application.yml 읽지 못할 때 (0) | 2020.06.18 |
classpath 안에 있는 json 파일 읽어서 json 객체 만들기 (0) | 2020.06.18 |
[Spring]스프링 프로젝트 다국어 처리 (0) | 2020.02.03 |