데이터를 확인하기 위해서 항상 System.out.println으로 확인했었는데 실무에서는 무조건 logback을 이용한다고 익숙해지라고 하셨다!
logback을 적용하기 위해서는!
먼저 maven repository에 logback을 검색하고,
가장 이용자가 많은 1.2.3 버전을 선택한다! 나는 지금 gradle을 사용하고 있기 때문에 build.gradle의 dependencies에
를 추가시켜준다!
maven 사용자는 pom.xml에 maven용 dependency를 추가하면 된다.
그럼 이제 Logger를 사용할 수 있게 된다!!!
근데 여기서 중요한점!
Lombok 설치가 되어있는 사람은 컨트롤러에서 어노테이션으로 @Slf4j를 해주면 바로 사용이 가능하고,
lombok이 없다면,
private static final Logger logger = LoggerFactory.getLogger(OrderController.class);
이렇게 선언을 해줘야 쓸 수 있다.
*ordercontroller는 내 컨트롤러 이름이다. 본인 컨트롤러 이름으로 바꿔서 써주면 됨
나는 어노테이션이 안걸려서 도대체 왜 나만 안되는건가 했더니 동기들은 다 lombok을 설치를 해서 바로 사용이 가능한 거였고,, 설치도 안하고 안된다고 아주 헤매고 있어버렸다..!!
다음으로는 src/main/resource 하위에 logback-spring.xml을 만들어준다!
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 변수 정의 -->
<property name="LOG_DIR" value="/dev/log" />
<property name="LOG_PATH_NAME" value="${LOG_DIR}/data.log" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(%-4relative) --- [ %thread{10} ] %cyan(%logger{20}) : %msg%n </pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH_NAME}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>labatory.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-4relative --- [ %thread{10} ] %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="org.thymeleaf" level="INFO"/>
<logger name="hello.mysql" additivity="true">
<level value="debug" />
</logger>
<!-- 3rdparty Loggers -->
<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>
<root level="debug">
<appender-ref ref="CONSOLE"/> <!-- Console에 로그를 출력하고자 할 때 사용 -->
<appender-ref ref="FILE"/> <!-- File로 로그를 남기고자 할 때 사용 -->
</root>
</configuration>
세세한 내용까지는 잘 모르겠지만 Level TRACE - DEBUG - INFO - WARN - ERROR 순으로 오른쪽으로 갈수록 높은레벨. 출력 레벨 이상의 로그만 출력한다고 한다.. 어렵다,,! 이건 따로 더 공부를 해봐야 할 것 같다!
아무튼 이렇게 하면 logback은 설치가 완료 된 것이고, 어떻게 쓰냐!
System.out.println("companyTable= "+companyTables);
logger.debug("companyTable = {}",companyTables);
이렇게 두개가 똑같이 콘솔에 보여주는 역할을 하는것이지만! sysout은 콘솔에 찍어주기만 할 뿐이고, logger는
이런식으로 내가 작성한 쿼리와 바로 비교하면서 값을 확인 할 수 있다.
*("companyTable = {}",companyTables") 이 형식은 지켜줘야 한다고 하니 알아두자!!! {}에 담아서 가져가는 것 같다!!
개꿀!! 실제로 우리 회사 프로님들은 무조건 logger로 찍어보신다!!
또 좋은 점으로는!
application.properties에
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/디비이름?serverTimezone=UTC&characterEncoding=UTF-8
을 설정해주고, log4jdbc.log4j2.properties 파일을 만들어서log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
얘를 넣어주면
이렇게 콘솔에도 이쁘게 표로 찍힌다!! 헤헿
그리고 application.properties에
logging.level.org.springframework.boot.autoconfigure=INFO
얘를 넣어주면 서버실행시 positive condition 어쩌고 저쩌고 엄청 길게 나오는데 쟤가 이걸 막아준다!
그리고
logging.level.root=warn
얘까지 넣어주면 서버실행할 때 콘솔에 네줄까지 줄일 수 있다!~!~!~!
이렇게 어려운 logback환경 설정하기 완성 오예아~!😉
'일기장 > 개발일기' 카테고리의 다른 글
[개발일기] .concat (2) | 2023.02.01 |
---|---|
[개발일기] e.preventDefault (4) | 2022.12.28 |
[개발환경] mac sts에 톰캣 연결하기 (3) | 2022.11.28 |
[개발환경] mac에 tomcat 설치하기 (5) | 2022.11.28 |
[개발환경] mac에 sts 설치하기 (4) | 2022.11.28 |