SLF4J란, Simple Logging Facade for Java의 약자로 Log4J의 개발자 Ceki Gülcü가 LogBack과 함께 개발한 Logging Facade 즉, 로깅에 대한 인터페이스 모음이라고 볼 수 있습니다.
LogBack이 바로 SLF4J의 Native 구현체이며 SLF4J를 사용하여 로깅 처리를 하면 실제 로그는 LogBack에서 출력하게 됩니다.
SLF4J에 대해 좀 더 자세히 알고 있으시면 공식 사이트(https://www.slf4j.org/) 에서 확인하세요
그리고 LogBack에 대한 메뉴얼은 https://logback.qos.ch/manual/index.html 에서 확인 가능합니다.
준비물
1.pom.xml에 logback 관련 의존성 추가
<dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>common-logging</artifactId> <groupId>common-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <artifactId>common-logging</artifactId> <groupId>common-logging</groupId> </exclusion> </exclusions> </dependency> </dependencies>
2. 설정파일(logback.xml) 추가
메인에 있는 코드가 실행될 때 적용하고 싶은 설정파일은 src/main/resource 밑에 두고, 테스트 단계에서 별도의 설정파일을 적용하고 싶으면 src/test/resource 밑에 둔다.
1) 로그 레벨
예) 레벨 : INFO로 설정하면 TRACE, DEBUG 레벨의 로그는 출력되지 않는다.
2) Appender
로그를 출력할 위치, 출력 형식등을 지정할 때 사용된다.
기본적인 Appender로는 ConsolAppender, FileAppender, RollingFileAppender가 있다.
ConsolAppender : 로그를 콘솔에 출력시킨다.
FileAppender : 로그의 내용을 지정된 파일에 기록한다.
RollingFileAppender : 지정된 패턴에 따라 로그가 파일에 기록하도록 하여 대량의 로그를 효과적으로 기록할 때 사용된다.
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %C.%M[%L] %m%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration>
3. 코드 예
결과
public class LogSample { private static final Logger logger = LoggerFactory.getLogger(LogSample.class); public static void main(String args[]){ String stringMsg = "Test"; int integerMsg = 123; logger.trace("trace"); logger.debug("debug"); logger.debug("debug {} {}", stringMsg, integerMsg); logger.info("info"); logger.warn("warn"); logger.error("error"); } }
결과
댓글 없음:
댓글 쓰기