개발자라면 꼭 필요한 로그관리, 사용방법과 설정방법을 함께 뽀개보자 !
사용 방법
먼저 사용방법은 간단하다.
로깅 라이브러리는 slf4j 을 사용하여 내가 로그를 남길 클래스에 선언을 해주고 메소드 내에서 사용하면 된다.
public class MainController(){
private final Logger LOGGER = LoggerFactory.getLogger(MainController.class.getName());
public void moveMainPage(){
LOGGER.info("Hello world!");
}
}
그럼 다음과 같이 콘솔창에 찍힐 것이다.
참고로 로그 레벨은 TRACE > DEBUG > INFO > WARN > ERROR 이다.
자바를 처음 시작했을 때 System.out.println("Hello world!"); 을 사용해서 'Hello world!' 는 모두 출력해봤을거다.
System.out.println 에 익숙한 사람들에게는 logger를 굳이 써야할 필요를 못느낄 수 있다.
하지만 위 콘솔에 출력된 것을 보면 차이를 확실히 알 수 있을거다.
System.out으로 로그를 찍을 경우 에러발생 시 추적할 수 있는 최소한의 정보가 없다.
단순히 로깅을 떠나 협업하는 개발자들을 위해 System.out은 지양하고 로깅 라이브러리를 사용해야 할 필요가 있다.
설정 방법
그렇다면 로그 설정은 어떻게 하는가 ?
log4j2.xml을 생성한 후 내가 로그를 찍을 클래스의 경로를 다음과 같이 입력하면 된다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5p [%c] %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="egovframework.ECALL_O.main.web" level="INFO" additivity="FALSE">
<AppenderRef ref="console" />
</Logger>
</Loggers>
</Configuration>
추가로 로그 파일을 저장하기 위한 경로 설정과 파일이름 설정하는 부분이다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<properties>
<property name="name">n_mo</property>
<property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} || %msg%n</property>
<property name="path">c:/logs</property>
</properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<!-- 로그파일 남길시 사용 -->
<RollingFile name="file"
fileName="${path}/${name}.log"
filePattern="${path}/${name}_%d{yyyyMMdd}.log">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/><!-- Rotated everyday -->
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="egovframework.ECALL_O.main.web" level="INFO" additivity="FALSE">
<AppenderRef ref="console" />
</Logger>
</Loggers>
</Configuration>
Line 15. filePattern 을 보면 {yyyyMMdd} 는 일자별 로그파일 저장기간을 설정한 것으로
하루가 지나면 c:/logs 폴더에 n_mo_20190601.log 라는 파일 이름으로 저장이 되는 것이다.
만약, filePattern에서 {yyyyMMddHH} 로 설정했다면 시간별로 로그 파일이 저장될 것이다.
'JVM > Java' 카테고리의 다른 글
[Error] DB Connection 종료 에러 해결: No operations allowed after statement closed (2) | 2019.10.24 |
---|---|
[Java] StringBuffer append("a"+"b") 메모리는 어떻게 할당될까? (0) | 2019.08.01 |
[Java] String, StringBuffer, StringBuilder의 차이점 스윽 (0) | 2019.07.30 |
[Java] String과 new String 차이 (0) | 2019.07.30 |
[Java] JAXB 활용한 Java 객체의 XML 변환 방법 (0) | 2019.07.09 |
댓글