티스토리 뷰
현재까지 기록을 콘솔에다가 출력하게 하였다. ex) System out println("ex")
서버를 껐다 켜면 사라지게 되었는데, 조금 더 깊이 들어가 24시간 로그들을 기록하여 관리를 해보고자 한다.
그러기 위해 logging에 대해 알아보자.
[마이바티스]를 [스프링]에서 쓰기 위해서 중간다리 역할을 하는 [마이바티스 스프링]을porn.xml에 등록하여 사용하였었다.
로깅도 마찬가지로 slf4j를 중간 다리 역할로 써주면 된다.
[log4j]를 [스프링]에서 쓰기위해 [slf4j]를 중간 다리 역할로 써주면 된다.
loggerFactory를 이용하여 logger을 만들고 logging 하는 것이 목표이다.
porn.xml에 들어가서 [log4j]를 찾아서 버전을 최신버전으로 변경한다.(Maven repository에서 검색한 후 버전 확인)
본인은 1.2.17 버전으로 변경하였다.
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
다음으로 중간다리 역할을 하는 [slf4j]의 변수의 버전을 변경 해준다.
*alpha , beta는 사용하지 않고 일반 버전을 사용해야 한다.
본인은 1.7.30 버전으로 변경하였다.
<org.slf4j-version>1.7.30</org.slf4j-version>
현재까지 porn.xml에서 2가지 작업을 하여 본격 로깅을 할 준비를 하였다.
1. log4j 버전 변경
2. slf4j 버전 변경 (변수 값 변경)
다음으로 로그 관련 설정 파일 2개를 수정하여야 한다.
1. src/main/resources/log4j.xml
2. src/test/resources/log4j.xml
일단, test안의 log4j.xml을 살펴보았더니 빨간줄이 여러개.. 오류 발생.
dtd를 이렇게 변경하여 해결하였다. 이 오류에 대해서는 다음 글로 다뤄보자.
<!DOCTYPE log4j:configuration SYSTEM
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
자 이제 준비는 마쳤고 테스트를 진행해보자.
src/test/java/TestClass.java
public class TestClass {
@Test
public void test() {
Logger logger = LoggerFactory.getLogger(TestClass.class);
System.out.println("test");
logger.trace("trace");
logger.debug("debug");
logger.info("logger info");
logger.warn("warn");
logger.error("error");
//로거를 왜 사용하는가? 실행의 문제가 있을 때 엔지니어 레벨에서 문제확인이 불가능 할 때,
//개발자에게 넘어가게 되는데 협업 시 파일의 로그레벨을 확인하여 에러를 파악하기 위해 사용된다.
}
}
<Appender> 3가지
1.ConsoleAppender : 콘솔에 출력
2.FileAppender : 로그를 파일에 추가 저장
3.DailyRollingFileAppender : 날짜별로 파일에 추가 저장
<!-- Appenders -->
<!-- Appender 설정 및 추가 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
<!-- -5p : 음수는 왼쪽정렬,양수는 오른쪽 정렬 / 숫자는 글자수(5 = 무조건 5칸) / p : priority(우선순위 == 로그 레벨)
c : class
%m%n : m == message / n == 개행(줄바꿈)
%d : date + {format설정} = %d{yyyy/MM/dd HH:mm:ss}
-->
<!-- File Appender xml-->
<appender name="faxml" class="org.apache.log4j.FileAppender">
<param name="file" value="myLogFile.xml" />
<param name="append" value="true" /> <!-- append == 이어쓰기 -->
<layout class="org.apache.log4j.xml.XMLLayout">
</layout>
</appender>
<!-- File Appender txt-->
<appender name="fatxt" class="org.apache.log4j.FileAppender">
<param name="file" value="myLogFile.txt" />
<param name="append" value="true" /> <!-- append == 이어쓰기 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
<!-- Daily Rolling File Appender txt-->
<appender name="fatxtday" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="D:/develop/logs/dailyLog.log" />
<param name="append" value="true" />
<param name="DatePattern" value="yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
작성한 log4j.xml을 살펴보자.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<!-- Appender 설정 및 추가 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
<!-- -5p : 음수는 왼쪽정렬,양수는 오른쪽 정렬 / 숫자는 글자수(5 = 무조건 5칸) / p : priority(우선순위 == 로그 레벨)
c : class
%m%n : m == message / n == 개행(줄바꿈)
%d : date + {format설정} = %d{yyyy/MM/dd HH:mm:ss}
-->
<!-- File Appender xml-->
<appender name="faxml" class="org.apache.log4j.FileAppender">
<param name="file" value="myLogFile.xml" />
<param name="append" value="true" /> <!-- append == 이어쓰기 -->
<layout class="org.apache.log4j.xml.XMLLayout">
</layout>
</appender>
<!-- File Appender txt-->
<appender name="fatxt" class="org.apache.log4j.FileAppender">
<param name="file" value="myLogFile.txt" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
<!-- Daily Rolling File Appender txt-->
<appender name="fatxtday" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="D:/develop/logs/dailyLog.log" />
<param name="append" value="true" />
<param name="DatePattern" value="yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss}] %-5p: %c - %m %n" />
</layout>
</appender>
<!-- Application Loggers -->
<!-- 설정된 level에 따라 로그 확인이 가능하다. 로거 설정 우선순위 1순위 -->
<logger name="com.kh.app">
<level value="debug" />
</logger>
<!-- Root Logger -->
<!-- 전체 로거 레벨 설정, 로거 설정 우선순위 2순위 -->
<root>
<priority value="warn" />
<appender-ref ref="fatxtday" />
<appender-ref ref="console" />
</root>
<!-- 3rdparty Loggers -->
<!-- 개별 세팅 가능하지만, Root Logger를 설정함으로서 전체 로거 레벨을 관리
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
-->
</log4j:configuration>
Logger logger = LoggerFactory.getLogger(TestClass.class);
대신 Lombok의 어노테이션을 사용하여 간편하게 사용 가능하다.
@Slf4j // log 라는 이름의 변수에 로거를 담는다.
public class TestClass {
@Test
public void test() {
//Logger logger = LoggerFactory.getLogger(TestClass.class);
System.out.println("test");
log.trace("trace");
log.debug("debug");
log.info("logger info");
log.warn("warn");
log.error("error");
}
}
- Total
- Today
- Yesterday
- 조건문
- 자바 do while
- 다운캐스팅
- 자바의 기초
- 자바 조건문 if else if문
- 객체지향이란
- 자바 switch case
- 자바 반복문
- java란
- 반복문
- Downcasting
- 자바 if if
- java 기초
- Switch Case
- 중첩반복문
- 스프링 logging
- 자바 프로그래밍이란
- 자바 조건문 if else
- 자바 if else if else
- 자바 반복문 for문
- 데이터베이스 null
- 자바 연산자 우선순위
- if else if
- 스프링 로깅
- 반복문 break continue
- java
- 자바
- if if
- 스프링 로그
- java 프로그래밍이란
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |