메이쁘

[Spring] lombok @Slf4j 커스텀 설정 및 적용 방법 간단 정리 본문

Technology/Web - Spring

[Spring] lombok @Slf4j 커스텀 설정 및 적용 방법 간단 정리

메이쁘 2021. 4. 29. 23:18

안녕하세요.

 

lombok의 @Slf4j 를 통해 Logger 객체 생성 없이 바로 log.debug()로 로그를 찍어볼 수 있는데요.

 

이 로그의 내용을 원하는대로 변경하기 위해 초기 설정하는 방법에 대해 기록해두려고 합니다.

 

 

 

 

1. pom.xml 설정


	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>4.3.4.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	 	<jackson.version>2.12.3</jackson.version>
	</properties>

  -  우선, <dependencies> 태그 시작 전 위에 별도의 properties를 설정하여, 버전 관리를 쉽게 할 수 있도록 합니다.

  -  위에서 jackson, java, springframework-version 태그는 작성하지 않아도 됩니다.

 

 

		<!-- 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>ch.qos.logback</groupId>
		  <artifactId>logback-classic</artifactId>
		  <version>1.2.3</version>
		</dependency>

  -  <dependencies> 안에 위 xml 내용을 집어넣습니다.

  -  기존에 들어있는 내용과 같을 수 있으니, 같은 것이 있는지 확인한 후 추가합니다.

 

 

 

2. lombok 설치


projectlombok.org/download

 

Download

 

projectlombok.org

위 홈페이지를 들어가서, 최신 롬복 설치파일을 다운로드 받습니다.

 

 

다음,

 

congsong.tistory.com/31 해당 블로그를 참고하시면 감사하겠습니다. (정리가 잘 되어있습니다.)

 

 

 

 

3. logback.xml 생성


1) 경로 : src/~/resources 폴더 안에 logback.xml 파일을 생성합니다.

 

2) 해당 내용을 붙여넣습니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{HH:mm:ss} [%-5level] %logger{36}[line: %L] - %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/tmp/access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/tmp/access-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>50</maxHistory>
        </rollingPolicy>

        <encoder>
            <Pattern>%d{HH:mm:ss} [%-5level] %logger{36}[line: %L] - %msg%n</Pattern>
        </encoder>
    </appender>

    <logger name="com.artiplace.api" level="debug"/>

    <root level="debug">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

간단히 설명하자면(타 블로그 참고함)

 

<appender> : 어디에 어떻게 로그를 남길 것인지 방법을 작성하여 제공

  -  ConsoleAppender : 콘솔에 로그를 어떻게 남길 것인지 작성

  -  FileAppender : 파일에 로그를 어떻게 남길 것인지 작성

  -  RollingFileAppender : 하루 단위로 로그 파일을 백업하면서 로그를 남기기 위한 방법을 작성

<Pattern> : 로그 남기는 패턴(방법)을 정리.

  -  HH:mm:ss 는 시:분:초 를 의미. 

  -  maxHistory 는 로그 파일의 내용 최대 개수

  -  %-5level 은 trace, debug, info, warn, error 총 5가지의 레벨이 존재하는데, 이 중 로그에 기록하고싶은 레벨을 표현한 것. 5level이니까 전부 보여주는걸로

 

<logger> : name은 패키지 경로를 넣으면, 해당 패키지에 속한 클래스에서 출력하는 로그는 level 이상의 로그를 출력하라는 뜻

<appender-ref> : <appender> 참조

<root> : root(패키지의 루트) 하위 대상 전부 해당 레벨에 포함하는 로그 기록

 

 

휴.. 이제 전부 끝났습니다.

롬복과 pom.xml 설정으로 인해, 별도의 Logger 객체를 생성하지 않고 바로 log 사용이 가능합니다.

 

 

4. java파일에서 로그 사용


@Slf4j 어노테이션은 클래스 위에

 

함수 내부에서는 log.debug()를 통해 사용하면 끝!

 

 

 

 

이상입니다.

 

감사합니다.

 

 

 

 

 

 

참고

enai.tistory.com/36

congsong.tistory.com/31 

Comments