본문 바로가기
backend/Java

log4j2

by 디 히 2023. 5. 4.

레거시 코드가 log4j로 되어있었기에 log4j2로 마이그레이션 작업을 진행하였다.

기존에는 jdbc관련 로그들이 수없이 올라왔기에 상황에 따라 주석 혹은 로그레벨의 설정에 따라 필요한 정보만 콘솔출력되고 파일에 저장되게 하였다.

 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
	<!-- Appenders -->
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss} %-5p: %c: %m%n" />
        </Console>
        <RollingFile name="rollingFile" fileName="/logs/my.log" filePattern="/logs/my-%d{yyyy-MM-dd}.log.zip">
            <PatternLayout pattern="%d{HH:mm:ss} %-5p: %c: %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
            <DefaultRolloverStrategy max="10">
				<Delete basePath="/logs/" maxDepth="1">
					<IfFileName glob="sms-*.log.zip" />
					<IfLastModified age="30d" />
				</Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    
    <!-- Application Loggers -->
    <Loggers>
        <!-- 3rdparty Logger -->
        <Logger name="org.springframework.core"				level="DEBUG" 	additivity="false" />
        <Logger name="org.springframework.beans"			level="DEBUG" 	additivity="false" />
        <Logger name="org.springframework.context"			level="DEBUG" 	additivity="false" />
        <Logger name="org.springframework.web"				level="DEBUG" 	additivity="false" />
        
        <!-- jdbc Logger -->
        <Logger name="jdbc.connection"						level="OFF"		additivity="false" />
        <Logger name="jdbc.sqlonly"							level="OFF"		additivity="false" />
        <Logger name="jdbc.sqltiming"						level="DEBUG"	additivity="false" />
        <Logger name="jdbc.audit"							level="OFF"		additivity="false" />
        <Logger name="jdbc.resultset"						level="OFF"		additivity="false" />
        <Logger name="jdbc.resultsettable"					level="DEBUG"	additivity="false" />
        
        <!-- ======================================	-->
        <!-- Log Levels:                  		   	-->
        <!-- FATAL, ERROR, WARN, INFO, DEBUG, TRACE	-->
        <!-- ======================================	-->
        <!-- 개발 시 Development Mode 주석해제, Production Mode 주석처리 -->
        <!-- 배포 시 Production Mode 주석해제, Development Mode 주석처리 -->
        
        <!-- Development Mode -->
<!--         <Root level="DEBUG">
            <AppenderRef ref="console" />
        </Root> -->
        
        <!-- Production Mode -->
        <Root level="INFO">
        	<AppenderRef ref="console" />
            <AppenderRef ref="rollingFile" />
        </Root>
    </Loggers>
</Configuration>
private static final Logger logger = LoggerFactory.getLogger(LoginController.class);

// controller 진입 시 info level 로그
logger.info("login_chk() RUN! - param: {}", param);

// 비밀번호 같은 민감한 정보는 마스킹처리
logger.info("login() RUN! - param: {USER_ID={}, SECR_NUMB={}}", param.get("USER_ID"), "****");

// 예외 발생 시 error level 로그
try {	
    ...
} catch (Exception e) {
    logger.error("approve: {} - param: {}", e.getMessage(), param);
}

 

'backend > Java' 카테고리의 다른 글

브라우저 캐시 관리  (0) 2023.06.22