<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- 1. Properties 설정 -->
<Properties>
<Property name="logNm">logtest</Property>
<Property name="layoutPattern">%d [%t] %-5level %c(%M:%L) - %m%n</Property>
</Properties>
<!-- 2. 출력 장치 설정 -->
<Appenders>
<!-- 1) Console에 출력 -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${layoutPattern}" /> <!-- 출력 포맷 설정 -->
</Console>
<!-- 2) File에 출력 -->
<RollingFile name="file" fileName="/log/${logNm}.log" filePattern="/log/logs/${logNm}_%d{yyyy-MM-dd}_%i.log">
<PatternLayout pattern="${layoutPattern}" />
<Policies> <!-- File 정책 설정 -->
<SizeBasedTriggeringPolicy size="10MB" /> <!-- 10MB 용량이 초과시 DefaultRolloverStrategy 정책만큼 넘버링 -->
<TimeBasedTriggeringPolicy module="true" interval="1" /><!-- 1일 단위로 로그 파일 생성 -->
</Policies>
<DefaultRolloverStrategy max="500" fileIndex="min" /><!-- 롤링 파일 500개 까지 생성 -->
</RollingFile>
</Appenders>
<!-- 3. 출력 메시지 설정 -->
<Loggers>
<!-- 1) 기본 레벨 설정 -->
<Root level="DEBUG" additivity="false">
<AppenderRef ref="console" /> <!-- 콘솔에 출력 -->
<AppenderRef ref="file" /> <!-- 파일에 출력 -->
</Root>
<!-- 2) 스프링 프레임워크에서의 로그는 INFO로 설정 -->
<logger name="org.springframework" level="INFO" additivity="false">
<AppenderRef ref="console" /> <!-- 콘솔에 출력 -->
</logger>
</Configuration>
- Properties
☞ XML 내에서 변수를 사용할 경우 사용한다.
- Appender
☞ 로그가 출력되는 위치를 나타낸다.
☞ 출력 방식은 Console, File, JDBC(DB)가 있다.
1) Console
☞ name은 AppenderRef 태그에서 참조할 때 사용한다.
(여기에서는 Console Appender는 system.out 출력으로 지정)
☞ PatternLayout은 출력 방식을 지정한다.
2) File
☞ RollingFile Appender는 파일에 출력한다.
☞ Policies를 통해 용량 등 파일 규칙을 정할 수 있다.
- Loggers
☞ 출력할 메시지를 Appender에 전달한다. (여러 개 정의 가능)
☞ 로깅 작업의 주체로, 패키지별로 로그 정책을 설정할 수 있다.
1) Root
☞ 일반적인 로그 정책을 정의한다. (반드시 정의를 해야 함)
☞ 여기에서는 'console과 file에 모두 출력'으로 설정되어 있다.
2) Spring Framework
☞ console에만 출력되도록 설정하였다.
(Root보다 더 우선순위로 취급되므로, file 출력은 제외된다.)
기타 ${ }를 통해 Property로 설정한 값(변수)을 가져다 쓸 수 있다.
참고 : https://pakss328.medium.com/log4j2-xml-%EC%84%A4%EC%A0%95-a3aa0d1bea2f