log4j2

밍키·2022년 10월 26일
0

Java

목록 보기
1/3
  • Apache에서 제작한 Open Source Library
  • System.out.print()의 불편함을 해소할 수 있다.
  • 옵션 선택을 통해 선택적으로 로그를 남기거나, 파일, DB 등에도 남길 수 있다.

Level

  1. FATAL : 아주 심각한 에러
  2. ERROR : 어떤 요청을 처리 중 발생한 에러
  3. INFO : 정보성 메시지
  4. DEBUG : 개발 시 디버그 용도의 메시지
  5. TRACE : 디버그 레벨이 광범위하여 좀 더 상세한 이벤트를 위함

대표 용어

  1. Properties : XML 내에서 변수를 사용할 경우 사용한다.
  2. Logger : 출력할 메시지를 Appender에 전달한다.
  3. Appender : 전달된 로그를 어디에 출력할 지 결정한다. (콘솔, 파일, DB 등)
<?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>
  1. Properties
    ☞ XML 내에서 변수를 사용할 경우 사용한다.
  1. Appender
    ☞ 로그가 출력되는 위치를 나타낸다.
    ☞ 출력 방식은 Console, File, JDBC(DB)가 있다.
    1) Console
    ☞ name은 AppenderRef 태그에서 참조할 때 사용한다.
    (여기에서는 Console Appender는 system.out 출력으로 지정)
    ☞ PatternLayout은 출력 방식을 지정한다.
    2) File
    ☞ RollingFile Appender는 파일에 출력한다.
    ☞ Policies를 통해 용량 등 파일 규칙을 정할 수 있다.
  1. 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

profile
슬로 라이프

0개의 댓글