Skip to content

Commit

Permalink
[#81] 로그 관리 설정, log4jdbc 설정 (#84)
Browse files Browse the repository at this point in the history
* add: log4jdbc gradle 의존 추가

* refactor: 전역 예외 처리 로그 레벨 별 메서드 리팩터링

* add: logback, log4jdbc 설정 추가

- info file appender

- warn file appender

- error file appender

- console appender

- sql file appender

- log4jdbc properties

- logback
  • Loading branch information
hyena0608 authored Jan 27, 2023
1 parent 207f080 commit c4e8d83
Show file tree
Hide file tree
Showing 10 changed files with 137 additions and 26 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ dependencies {
// JWT dependency
implementation group: 'com.auth0', name: 'java-jwt', version: '4.2.1'

// Log4jdbc
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
}

dependencyManagement {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ public ErrorResponse handleIllegalArgumentException(IllegalArgumentException e)
return ErrorResponse.of(BAD_REQUEST.name(), MessageUtil.getMessage(e.getMessage()));
}

@ResponseStatus(BAD_REQUEST)
@ResponseStatus(INTERNAL_SERVER_ERROR)
@ExceptionHandler(IllegalStateException.class)
public ErrorResponse handleIllegalStateException(IllegalStateException e) {
logWarn(e);
return ErrorResponse.of(BAD_REQUEST.name(), MessageUtil.getMessage(e.getMessage()));
return ErrorResponse.of(INTERNAL_SERVER_ERROR.name(), MessageUtil.getMessage(e.getMessage()));
}

@ResponseStatus(INTERNAL_SERVER_ERROR)
Expand All @@ -87,13 +87,11 @@ private void logDebug(HttpServletRequest request, Exception e) {
log.debug("[EXCEPTION] HTTP_METHOD_TYPE -----> [{}]", request.getMethod());
log.debug("[EXCEPTION] EXCEPTION_TYPE -----> [{}]", e.getClass().getSimpleName());
log.debug("[EXCEPTION] EXCEPTION_MESSAGE -----> [{}]", MessageUtil.getMessage(e.getMessage()));
log.debug("[EXCEPTION] -----> ", e);
}

private void logWarn(Exception e) {
log.warn("[EXCEPTION] EXCEPTION_TYPE -----> [{}]", e.getClass().getSimpleName());
log.warn("[EXCEPTION] EXCEPTION_MESSAGE -----> [{}]", MessageUtil.getMessage(e.getMessage()));
log.warn("[EXCEPTION] -----> ", e);
}

private void logError(Exception e) {
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/appender/console-appender.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<included>
<appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</encoder>
</appender>
</included>
22 changes: 22 additions & 0 deletions src/main/resources/appender/error-file-appender.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<included>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error/error.txt</file>

<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>

<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error/error.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</included>
17 changes: 17 additions & 0 deletions src/main/resources/appender/info-file-appender.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<included>
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>

<file>${LOG_PATH}/info/info.txt</file>

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info/info.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</included>
18 changes: 18 additions & 0 deletions src/main/resources/appender/sql-file-appender.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<included>
<property name="SQL_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%-28.28logger{0}] - %m%n"/>

<appender name="SQL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/db/sql.txt</file>

<encoder>
<pattern>${SQL_LOG_PATTERN}</pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/db/sql.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</included>
22 changes: 22 additions & 0 deletions src/main/resources/appender/warn-file-appender.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<included>
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/warn/warn.txt</file>

<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>

<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/warn/warn.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</included>
11 changes: 1 addition & 10 deletions src/main/resources/application-db.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ spring:

# database 설정
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: ${SPRING_DATASOURCE_URL}
username: ${SPRING_DATASOURCE_USERNAME}
password: ${SPRING_DATASOURCE_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver

# 커넥션 풀 설정
hikari:
Expand Down Expand Up @@ -37,22 +37,13 @@ spring:
basename: messages/exceptions/exception, messages/logs/log-form

# SQL 로그 설정
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace # 파라미터 값

--- # local
spring:
config:
activate.on-profile: "db-local"
import: optional:file:.env[.properties]

logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace # 파라미터 값

--- # prod
spring:
config:
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/log4jdbc.log4j2.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
56 changes: 44 additions & 12 deletions src/main/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}:%L){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<property name="LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } [%15.15t] %-40.40logger{39}:%L{cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}) %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}:%L){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</encoder>
</appender>
<include resource="appender/console-appender.xml"/>

<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
<springProfile name="local">
<root level="INFO">
<logger name="jdbc.sqltiming" level="INFO" additivity="true">
<appender-ref ref="CONSOLE_APPENDER"/>
</logger>
<logger name="jdbc.resultsettable" level="INFO" additivity="true">
<appender-ref ref="CONSOLE_APPENDER"/>
</logger>
</root>
</springProfile>

<springProfile name="prod">
<property name="LOG_PATH" value="./logs"/>
<include resource="appender/info-file-appender.xml"/>
<include resource="appender/warn-file-appender.xml"/>
<include resource="appender/error-file-appender.xml"/>
<include resource="appender/sql-file-appender.xml"/>
<root level="INFO">
<appender-ref ref="CONSOLE_APPENDER"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="WARN_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>

<logger name="jdbc" level="OFF"/>
<logger name="jdbc.connection" level="OFF"/>
<logger name="jdbc.sqltiming" level="INFO" additivity="false">
<appender-ref ref="SQL_FILE"/>
</logger>
<logger name="jdbc.resultsettable" level="INFO" additivity="false">
<appender-ref ref="SQL_FILE"/>
</logger>
</springProfile>

</configuration>

0 comments on commit c4e8d83

Please sign in to comment.