10. logback 설정

1. 들어가기 전

   - 최근 log4j.xml의 보안 이슈로 logback lib로 변경 (log4j 설정 변경으로 보안 업데이트 가능)

   - logback은 log4j의 후속 버전

   - log4j와 비교했을 때 속도 향상, 메모리 점유율 하락, 성능 개선 등이 이뤄짐

 

2.  기존 log4j.xml 파일 및 dependency 삭제

   - 충돌 가능성이 존재하니 log4j.xml 삭제

 

   - pom.xml 에서 아래의 코드가 존재하면 삭제하도록 한다

<!-- Logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${org.slf4j-version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
    <exclusions>
        <exclusion>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
        </exclusion>
        <exclusion>
            <groupId>javax.jms</groupId>
            <artifactId>jms</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.sun.jdmk</groupId>
            <artifactId>jmxtools</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.sun.jmx</groupId>
            <artifactId>jmxri</artifactId>
        </exclusion>
    </exclusions>
    <scope>runtime</scope>
</dependency>

 

3.  pom.xml 에 dependency 추가

<!-- ************************************************************ -->
<!-- log -->
<!-- ************************************************************ -->

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${org.slf4j-version}</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>

<!-- ************************************************************ -->

 

4. 설정 파일 생성 및 코드 작성

   - src > main > resources > logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 60초 파일 변경 확인 및 재시작 -->
<configuration scan="true" scanPeriod="60 seconds">
	<!-- logback 종료 -->
	<shutdownHook />
	
	<!-- 참조 : https://logback.qos.ch/documentation.html -->
	<!-- ConsoleAppender	 : 콘솔 로그 기록		-->
	<!-- DBAppender			 : DB 로그 기록		-->
	<!-- FileAppender		 : 파일 로그 기록		-->
	<!-- RollingFileAppender : 여러 파일에 로그 기록	-->
	<!-- SMTPAppender		 : 메일 로그 기록		-->
	
	<!-- console에 로그 -->
	<appender name="CONSOL" class="ch.qos.logback.core.ConsoleAppender">
		<layout class="ch.qos.logback.classic.PatternLayout">
			<!-- 로그 패턴 설정 : 참조 : https://livenow14.tistory.com/64 -->
			<Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger] - %replace(%msg){'[\r\n]+', ''} %n</Pattern>
		</layout>
	</appender>
	
	<!-- logger name	: "클래스 위치"								-->
	<!-- level			: "ERROR < WARN < INFO < DEBUG < TRACE"	-->
	<!-- appender-ref	: "위의 appender 설정 name"				-->
	<!-- additivity     : "false" //로그 중복 생성 방지				-->
	
	<logger name="com.hhkim.homepage" additivity="false">
		<level value="DEBUG" />
		<appender-ref ref="CONSOL" />
	</logger>
	
	<logger name="org.springframework">
		<level value="DEBUG" />
		<appender-ref ref="CONSOL" />
	</logger>
	
	<root level="DEBUG">
		<appender-ref ref="CONSOL" />
	</root>

</configuration>

 

5. 결과 확인