-
[Spring] 게시판 만들기(10) - log4j->logback으로 변경Spring/4.3.x - 게시판 만들기 2018. 12. 13. 15:20반응형
로깅(Logging)은 개발 시에 오류 확인 및 처리를 위한 용도로 사용합니다. System.out.print()을 사용하면 되지 않나? 라는 의문이 생길 수 있지만 System.out.print() 리소스를 많이 사용하여 성능에 영향을 줄 수 있고 Logging을 사용하면 에러 및 장애 발생 시 확인할 수 최소한의 정보(날짜, 시간, 로그 타입 등)를 제공 받을 수 있으므로 System.out.println()보다 Logging을 사용하는 습관을 가지면 좋을 것 같습니다.
logback은 log4j를 만든 개발자가 log4j를 기반으로 만든 Logging 라이브러리로 logback 사용 시에 log4j보다 추가되는 장점이 많아 변경하는 작업을 진행하도록 하겠습니다.1. POM.xml에 의존성 추가
1_1. 프로젝트 생성 시에 추가된 Exclude Commons Logging in favor of SLF4j, Logging과 관련된 의존성을 삭제하세요.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<org.slf4j-version>1.6.6</org.slf4j-version><!-- Exclude Commons Logging in favor of SLF4j --><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion><!-- 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>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><exclusions><exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion><exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion><exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion><exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion></exclusions><scope>runtime</scope></dependency>cs 1_2. logback과 관련된 의존성을 추가하세요.
12345678910111213<org.slf4j.version>1.7.21</org.slf4j.version><logback.version>1.1.7</logback.version><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${org.slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency>cs 2. logback.xml 추가
src/main/resources 위치에 log4j.xml 을 삭제하고 logback.xml 을 추가하세요.
12345678910111213141516171819202122<?xml version="1.0" encoding="UTF-8"?><configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d %-5level %logger - %msg%n</pattern></layout></appender><logger name="org.springframework" level="info" additivity="false"><appender-ref ref="STDOUT"/></logger><logger name="com.spring.board" level="debug" additivity="false"><appender-ref ref="STDOUT"/></logger><root level="error"><appender-ref ref="STDOUT"/></root></configuration>cs 3. 로그 확인
3_1. MySQLConnectionTest.java 파일에 System.out.println을 logger.info로 변경한 후 JUnit으로 실행하세요. (SampleController.java 파일도 System.out.println을 logger로 변경하여 테스트해보세요.)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081package com.spring.board;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class MySQLConnectionTest {protected final Logger logger = LoggerFactory.getLogger(this.getClass());static final String DRIVER = "com.mysql.jdbc.Driver";static final String URL = "jdbc:mysql://127.0.0.1:3306/board?allowPublicKeyRetrieval=true&useSSL=false";static final String USERNAME = "board";static final String PASSWORD = "password1!";@Testpublic void getMySQLConnectionTest() {Connection conn = null;Statement stmt = null;try {logger.info("==================== MySQL Connection START ====================");Class.forName(DRIVER);conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);stmt = conn.createStatement();String sql = "SELECT BOARD_SUBJECT, BOARD_CONTENT, BOARD_WRITER FROM TB_BOARD";ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {String boardSubject = rs.getString("BOARD_SUBJECT");String boardContent = rs.getString("BOARD_CONTENT");String boardWriter = rs.getString("BOARD_WRITER");logger.info("boardSubject : {}", boardSubject);logger.info("boardContent: {}", boardContent);logger.info("boardWriter: {}", boardWriter);logger.info("========================================");}rs.close();stmt.close();conn.close();} catch (SQLException se1) {se1.printStackTrace();} catch (Exception ex) {ex.printStackTrace();} finally {try {if (stmt != null) {stmt.close();}} catch (SQLException se) {se.printStackTrace();}try {if (conn != null) {conn.close();}} catch (SQLException se) {se.printStackTrace();}}logger.info("==================== MySQL Connection END ====================");}}cs 소스 코드는 Github Repository - https://github.com/tychejin1218/board_v1 (branch : section10) 를 참조하세요.
Github에서 프로젝트 가져오기 - https://tychejin.tistory.com/33반응형'Spring > 4.3.x - 게시판 만들기' 카테고리의 다른 글
[Spring] 게시판 만들기(12) - Mybatis 연동 (9) 2018.12.14 [Spring] 게시판 만들기(11) - 인터셉터(Interceptor) 설정 (5) 2018.12.14 [Spring] 게시판 만들기(9) - MySQL 연동 (11) 2018.12.04 [Spring] 게시판 만들기(8) - 디렉토리 구조 및 설정 파일 변경(web.xml, *-context.xml) (11) 2018.11.30 [Spring] 게시판 만들기(7) - MySQL SCHEMA 및 TALBE 생성하기 (8) 2018.11.30