configurations {
//내부 로깅 프레임워크(Logback)을 제외
configureEach {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
compileOnly {
extendsFrom annotationProcessor
}
}
...
dependencies {
...
// Spring Boot Log4j2 추가
implementation "org.springframework.boot:spring-boot-starter-log4j2";
...
}
logging:
config: classpath:log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- 해당 설정파일에서 사용하는 프로퍼티-->
<Properties>
<property name="LOGS_PATH">./logs</property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%logger{36}]: %msg%n"/>
</Console>
<!-- 파일 -->
<RollingFile name="RollingFile">
<FileName>${LOGS_PATH}/test.log</FileName>
<FilePattern>${LOGS_PATH}/test.log.%d{yyyy-MM-dd}</FilePattern>
<PatternLayout>
<Pattern>[%-5level][%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%logger{36}]: %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="100MB"/>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<!-- Application Loggers -->
<!-- Root 보다 우선 순위가 높습니다. -->
<logger name="com.test.test" level="debug">
<AppenderRef ref="console"/>
<AppenderRef ref="RollingFile"/>
</logger>
</Loggers>
</Configuration>
[로그레벨][yyyy-MM-dd HH:mm:ss.SSS][threadName][className]: msg
[INFO ][2024-10-26 19:26:35.035][http-nio-8080-exec-1][com.sample.test.service.MemberServiceImpl]: log4j2 success