* 로깅툴을 사용하는 이유
- System.out.println() 명령어는 IO 리소스를 많이 사용하여 시스템이 느려질 수 있음
- 로그를 파일로 저장하여 분석할 필요가 있음
* 로깅툴의 종류
- commons-logging : 스프링 3에서 사용하던 로깅툴
- log4j : 효율적인 메모리 관리로 그동안 많이 사용되었음
- logback : log4j 보다 성능이 더 우수하여 최근에 많이 사용되고 있음
* SLF4J : logback을 사용하기 위한 인터페이스
* 설정방법
1. pom.xml 의 slf4j-version 을 1.7.21 로 수정
<pre>
<code class="xml">
<properties>
<java-version>1.8</java-version>
<org.springframework-version>4.3.0.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.7.21</org.slf4j-version>
</properties>
</code>
</pre>
2. pom.xml 에 라이브러리 추가
<pre>
<code class="xml">
<!-- logback 로깅 관련 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
</code>
</pre>
3. src/main/resources 에 logback.xml 파일 작성
<pre>
<code class="xml">
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-4level [%logger.%method:%line]-
%msg%n</pattern>
</layout>
</appender>
<appender name="LOGFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/WEB-INF/logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 30일 지난 파일은 삭제한다. -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4level [%logger.%method:%line]
- %msg %n</pattern>
</encoder>
</appender>
<!-- 로그의 레벨( 지정된 로그 레벨 이상만 수집 ) : DEBUG < INFO < WARN < ERROR < FATAL -->
<logger name="myweb" additivity="false">
<level value="INFO" />
<appender-ref ref="LOGFILE" />
<appender-ref ref="CONSOLE" />
</logger>
<root>
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
</code>
</pre>
4. 로그를 수집할 클래스에 변수 선언
private static final Logger logger = LoggerFactory.getLogger(클래스이름.class);
private : 외부에서 로그를 가로채지 못하도록 하기 위해서
static final : 로그 내용이 바뀌지 않으므로
5. 로그를 수집할 method에서 로그 수집 명령어 호출
logger.info("로그 타이틀", 출력할 값);
* 로그의 level
1. Debug : Debug, Info, Warn, Error 포함
2. Info : Info, Warn, Error 포함
3. Warn : Warn, Error 포함
4. Error : Error만 포함
6. MyBatis 의 로그
<pre>
<code class="xml">
<!-- MyBatis 의 로그 https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
</code>
</pre>
------------------------------------------ root-contex.xml ----------------------------------
<pre>
<code class="xml">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="url"
value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="gon" />
<property name="password" value="gon" />
</bean>
</code>
</pre>
log4jdbc.log4j2.properties 파일과 logback.xml 파일을 추가
댓글 ( 4)
댓글 남기기