스프링

* 로깅툴을 사용하는 이유

- 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 파일을 추가 

 

 


 

 

about author

PHRASE

Level 60  머나먼나라

어버이라는 것은 하나의 중요한 직업이다. 그러나 여지껏 일찍이 아이들을 위해, 이 직업의 적성검사(適性檢査)를 한 적이 없다. -버나드 쇼

댓글 ( 4)

댓글 남기기

작성

스프링 목록    more