Skip to content

Commit

Permalink
로그 기능 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
rbsks committed Oct 4, 2022
1 parent 0dcf07c commit 9456850
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 3 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,7 @@ src/jacoco/
._*
.Spotlight-V100
.Trashes

### log ###
*.logs
*.log
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'mysql:mysql-connector-java'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.workduo.configuration.aop.logger;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Aspect
@Component
public class LoggerAspect {

@Around("execution(* com.workduo..*Controller.*(..))")
public Object methodLogger(ProceedingJoinPoint pjp) throws Throwable {

try {
Object result = pjp.proceed();

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

String controllerName = pjp.getSignature().getDeclaringType().getSimpleName();
String methodName = pjp.getSignature().getName();

Map<String, Object> params = new HashMap<>();

try {
params.put("controller", controllerName);
params.put("method", methodName);
params.put("log_time", LocalDateTime.now());
params.put("request_uri", request.getRequestURI());
params.put("http_method", request.getMethod());
} catch (Exception e) {
log.error("LoggerAspect error", e);
}

log.info("params : {}", params);

return result;
} catch (Throwable throwable) {
throw throwable;
}
}
}
2 changes: 1 addition & 1 deletion src/main/resources/application-dev.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DB_HOST: jdbc:mysql://localhost:3306/workduo?autoReconnect=true&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
DB_HOST: jdbc:log4jdbc:mysql://localhost:3306/workduo?autoReconnect=true&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
DB_NAME: workduo1
DB_PASSWORD: workduo1!
REDIS_PORT: 6379
Expand Down
6 changes: 4 additions & 2 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ spring:
active: dev

datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# driver-class-name: com.mysql.cj.jdbc.Driver
url: ${DB_HOST}
username: ${DB_NAME}
password: ${DB_PASSWORD}
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy

redis:
port: ${REDIS_PORT}
Expand Down Expand Up @@ -47,8 +48,9 @@ spring:
# password:
# driver-class-name: org.h2.Driver
logging:
config: classpath:logback-spring.xml
level:
org.hibernate.SQL: debug
# org.hibernate.SQL: debug
com.amazonaws.util.EC2MetadataUtils: ERROR


Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/log4jdbc.log4j2.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
79 changes: 79 additions & 0 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="LOGS_NORMAL_PATH" value="./logs/normal"/>
<property name="LOGS_ERROR_PATH" value="./logs/error"/>
<property name="LOGS_LEVEL" value="INFO"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(%-4relative) --- [ %thread{10} ] %cyan(%logger{20}) : %msg%n </pattern>
</layout>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_NORMAL_PATH}/log_file.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOGS_NORMAL_PATH}/%d{yyyy-MM-dd}_%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>7</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_ERROR_PATH}/error_file.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOGS_ERROR_PATH}/%d{yyyy-MM-dd}_error.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<appender name="file-async" class="ch.qos.logback.classic.AsyncAppender" includeLocation="true">
<appender-ref ref="FILE" />
<queueSize>1</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
<neverBlock>false</neverBlock>
</appender>

<appender name="error-async" class="ch.qos.logback.classic.AsyncAppender" includeLocation="true">
<appender-ref ref="ERROR" />
<queueSize>1</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
<neverBlock>false</neverBlock>
</appender>

<logger name="jdbc" level="OFF" />
<logger name="jdbc.sqlonly" level="${LOGS_LEVEL}" />
<logger name="jdbc.sqltiming" level="${LOGS_LEVEL}" />
<logger name="jdbc.audit" level="OFF" />
<logger name="jdbc.resultset" level="OFF" />
<logger name="jdbc.resultsettable" level="OFF" />
<logger name="jdbc.connection" level="OFF" />

<root level="${LOGS_LEVEL}">
<appender-ref ref="STDOUT" />
<appender-ref ref="file-async" />
<appender-ref ref="error-async" />
</root>
</configuration>

0 comments on commit 9456850

Please sign in to comment.