본문 바로가기

자바

log4j2 xml

log for java

자바의 로그를 위한 패키지

 

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="RoutingLog" monitorInterval="30">
    <Properties>
        <Property name="consolePattern">%d{HH:mm:ss.SSS} [%t] %-5level %c(%M:%L) - %m%n</Property>
        <Property name="rollingPattern">%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property>
        <Property name="filepath">./log/${date:yyyy}/${date:MM}</Property>
    </Properties>

    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="${consolePattern}"/>
        </Console>
        <RollingFile name="file" fileName="${filepath}/${date:dd}.log"
                     filePattern="${filepath}/dailyLog_%d{yyyy-MM-dd.HHmm}.log">
            <PatternLayout pattern="${rollingPattern}"/>
            <Policies>
                <CronTriggeringPolicy schedule="0 */1 * * * ?"/>
                <!--<SizeBasedTriggeringPolicy size="10KB"/>-->
            </Policies>
            <!--<DirectWriteRolloverStrategy maxFiles="10"/>-->
            <DefaultRolloverStrategy>
                <Delete basePath="./log/${date:yyyy}/${date:MM}" maxDepth="1">
                    <IfFileName glob="*/dailyLog_*.log" />
                    <IfLastModified age="2m" />
                    <!--<IfAccumulatedFileCount exceeds="3"/>-->
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- 로그 기본 레벨 -->
        <Root level="info">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="file"/>
        </Root>
    </Loggers>

</Configuration>

 

위치

xml : 프로젝트/src/resources/log4j2.xml

스프링 pom.xml에 log4j-api와 log4j-core 의존성을 주입했다면 위의 위치에 xml을 만들면 알아서 읽어감

 

log : 어디서 생성되는지 모르면 로그 레벨을 debug로 하고 로그를 보다보면 아래와 같은 로그를 볼 수 있음

현재 날짜가 2023년 2월 14일 이므로 yyyy는 2023, MM은 02, dd는 14로 생성됨

로그 생성 경로 및 파일 이름 - C:\Program Files (x86)\apache-tomcat-9.0.71\bin\.\log\2023\02\14.log

2023-02-14 17:34:54,280 RMI TCP Connection(3)-127.0.0.1 DEBUG Returning file creation time for C:\Program Files (x86)\apache-tomcat-9.0.71\bin\.\log\2023\02\14.log

 

 

설명

Properties - 사용자 정의 요소들

 

RollingFile - 파일을 어떻게 회전시킬지 정의

  • name : 이 프로퍼티의 이름
  • fileName : 저장될 로그 파일의 경로와 이름(패턴)
  • filePattern : 저장된 로그파일의 롤링 패턴(파일의 경로와 이름(패턴))

Policies - 롤링파일 만드는 정책 / 기준

참고 URL : https://logging.apache.org/log4j/2.x/manual/appenders.html

Delete - 조건들이 모두 해당하는 파일 삭제

  • basePath : 삭제 적용할 폴더
  • maxDepth : basePath의 하위 몇번째까지 적용할 지
  • IfLastModified : 마지막 수정날짜가 여기 해당하면 삭제
  • IfFileName : 파일 이름 패턴

 

참고

패턴 : https://kwonnam.pe.kr/wiki/java/log4j/pattern

https://pakss328.medium.com/log4j2-xml-%EC%84%A4%EC%A0%95-a3aa0d1bea2f

https://gogo-jjm.tistory.com/53

https://developjuns.tistory.com/30

https://theuphill.tistory.com/7

'자바' 카테고리의 다른 글

EAR WAR JAR  (0) 2023.06.07
replaceAll  (1) 2023.03.21
HashMap / HashTable  (0) 2023.02.08
상속 / 포함  (0) 2023.01.29
클래스 Class  (0) 2023.01.29