IT 개발노트
log4j 적용 본문
pom.xml
- property 추가
--> jcloverslf4j.version
--> logback.version
- dependency 추가
--> JCL제외 코드 추가 ( 이미 Spring, MyBatis에서 JCL을 사용중이기 때문에 JCL을 추가적으로 받을 필요가 없다 )
--> jcl-over-slf4j 라이브러리 추가
--> logback 라이브러리 추가
<properties>
<org.springframework-version>4.2.1.RELEASE</org.springframework-version>
<jcloverslf4j.version>1.7.6</jcloverslf4j.version>
<logback.version>1.1.1</logback.version>
</properties>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<!-- Spring Core Library -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<!-- JCL 제외 -->
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcloverslf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
- classpath root
--> logback.xml 추가하고 [설정]
log level 순서
- debug
- info
- warn
- error
- logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
</Pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/logex/logex2.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>/logex/logex2.%i.log.zip</FileNamePattern>
<MinIndex>1</MinIndex> <!-- 파일 개수 -->
<MaxIndex>10</MaxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>50KB</MaxFileSize> <!-- 파일 사이즈 -->
</triggeringPolicy>
</appender>
<appender name="fileAppender3" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/logex/logex3.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>/logex/logex3.%i.log.zip</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>10</MaxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>1MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--
kr.co.itcen.logex2 아래 패키지 로그들만 \logex\logex2.log 파일에만 출력하는 로거
-->
<logger name="kr.co.itcen.logex2" level="debug" additivity="false">
<appender-ref ref="fileAppender2" />
</logger>
<!--
kr.co.itcen.logex3 아래 패키지 로그들만 \logex\logex3.log 파일과 콘솔로 출력하는 로거
-->
<logger name="kr.co.itcen.logex3" level="warn" additivity="false">
<appender-ref ref="fileAppender3" />
<appender-ref ref="consoleAppender" />
</logger>
<!-- 루트(글로벌) 로거 -->
<root level="warn">
<appender-ref ref="consoleAppender" />
</root>
</configuration>