Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.idea
.idea
logs
*.log
28 changes: 26 additions & 2 deletions apps/user-service/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,46 @@ configurations {
compileOnly {
extendsFrom annotationProcessor
}
// Spring Boot의 기본 로깅(Logback) 제외
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}

repositories {
mavenCentral()
}

dependencies {
// Spring Boot Starters
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.5'
implementation 'org.springframework.boot:spring-boot-starter-aop'

// MyBatis
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.5'

// Log4j2 - 모든 모듈을 2.22.1로 통일
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
implementation 'org.apache.logging.log4j:log4j-core:2.22.1'
implementation 'org.apache.logging.log4j:log4j-api:2.22.1'
implementation 'org.apache.logging.log4j:log4j-slf4j2-impl:2.22.1'
implementation 'org.apache.logging.log4j:log4j-jul:2.22.1'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml'

// 비동기 로깅
implementation 'com.lmax:disruptor:3.4.4'

// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

// Database
runtimeOnly 'com.h2database:h2'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'

// Test Dependencies
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.5'
Expand Down
5 changes: 4 additions & 1 deletion apps/user-service/src/main/resources/application-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ spring:
use_sql_comments: true
jdbc:
lob:
non_contextual_creation: true
non_contextual_creation: true

logging:
config: classpath:log4j2-develop.yml
126 changes: 126 additions & 0 deletions apps/user-service/src/main/resources/log4j2-develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
Configuration:
name: develop

properties:
property:
- name: "log-path"
value: "./logs"
- name: "charset-UTF-8"
value: "UTF-8"
# 통일된 콘솔 패턴 - 모든 로그에 RequestId 포함
- name: "console-layout-pattern"
value: "%highlight{[%-5level]} [%X{id}] %d{MM-dd HH:mm:ss} [%t] %n %msg%n%n"
# 파일용 상세 패턴 - RequestId 포함
- name: "file-layout-pattern"
value: "[%X{id}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
# 로그 파일 경로들
- name: "info-log"
value: ${log-path}/user-service/info.log
- name: "error-log"
value: ${log-path}/user-service/error.log
- name: "auth-log"
value: ${log-path}/user-service/auth.log
- name: "json-log"
value: ${log-path}/user-service/json-info.log

# [Appenders] 로그 기록방식 정의
Appenders:
# 통일된 콘솔 출력
Console:
name: console-appender
target: SYSTEM_OUT
PatternLayout:
pattern: ${console-layout-pattern}

# 롤링 파일 로그
RollingFile:
name: rolling-file-appender
fileName: ${log-path}/rolling-file.log
filePattern: "logs/archive/rolling-file.log.%d{yyyy-MM-dd-hh-mm}_%i.gz"
PatternLayout:
charset: ${charset-UTF-8}
pattern: ${file-layout-pattern}
Policies:
SizeBasedTriggeringPolicy:
size: "200KB"
TimeBasedTriggeringPolicy:
interval: "1"
DefaultRollOverStrategy:
max: "30"
fileIndex: "max"

# 파일 로그들
File:
- name: file-info-appender
fileName: ${info-log}
PatternLayout:
pattern: ${file-layout-pattern}
- name: file-error-appender
fileName: ${error-log}
PatternLayout:
pattern: ${file-layout-pattern}
- name: file-auth-appender
fileName: ${auth-log}
PatternLayout:
pattern: ${file-layout-pattern}
- name: file-json-info-appender
fileName: ${json-log}
PatternLayout:
pattern: ${file-layout-pattern}

# [Loggers] 로그 출력 범위를 정의
Loggers:
# [Loggers - Root] 모든 로그를 기록하는 최상위 로그를 정의
Root:
level: OFF
AppenderRef:
- ref: console-appender
- ref: rolling-file-appender

# [Loggers - Loggers] 특정 패키지나 클래스에 대한 로그를 정의
Logger:
# 1. Spring Framework 로그
- name: org.springframework
additivity: "false"
level: DEBUG
AppenderRef:
- ref: console-appender
- ref: file-info-appender
- ref: file-error-appender

# 2. 애플리케이션 로그
- name: com.movement.mvp
additivity: "false"
level: TRACE
AppenderRef:
- ref: console-appender
- ref: file-info-appender
- ref: file-error-appender

# 3. HikariCP 로그 비활성화
- name: com.zaxxer.hikari
level: OFF

# 4. Spring Security 로그 - 인증/인가 추적에 중요
- name: org.springframework.security
level: DEBUG
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-auth-appender

# 5. 웹 요청 로그 - 요청 처리 과정 추적
- name: org.springframework.web
level: DEBUG
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-info-appender

# 6. 트랜잭션 로그 - DB 작업 추적
- name: org.springframework.transaction
level: DEBUG
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-info-appender
78 changes: 78 additions & 0 deletions apps/user-service/src/main/resources/log4j2-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Configuration:
name: test

properties:
property:
- name: "log-path"
value: "./logs"
- name: "charset-UTF-8"
value: "UTF-8"
# 통일된 콘솔 패턴 - 모든 로그에 RequestId 포함
- name: "console-layout-pattern"
value: "%highlight{[%-5level]} [%X{id}] %d{MM-dd HH:mm:ss} [%t] %n %msg%n%n"

# [Appenders] 로그 기록방식 정의
Appenders:
# 통일된 콘솔 출력
Console:
name: console-appender
target: SYSTEM_OUT
PatternLayout:
pattern: ${console-layout-pattern}

# [Loggers] 로그 출력 범위를 정의
Loggers:
# [Loggers - Root] 모든 로그를 기록하는 최상위 로그를 정의
Root:
level: OFF
AppenderRef:
- ref: console-appender
- ref: rolling-file-appender

# [Loggers - Loggers] 특정 패키지나 클래스에 대한 로그를 정의
Logger:
# 1. Spring Framework 로그
- name: org.springframework
additivity: "false"
level: INFO
AppenderRef:
- ref: console-appender
- ref: file-info-appender
- ref: file-error-appender

# 2. 애플리케이션 로그
- name: com.movement
additivity: "false"
level: INFO
AppenderRef:
- ref: console-appender
- ref: file-info-appender
- ref: file-error-appender

# 3. HikariCP 로그 비활성화
- name: com.zaxxer.hikari
level: OFF

# 4. Spring Security 로그 - 인증/인가 추적에 중요
- name: org.springframework.security
level: INFO
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-auth-appender

# 5. 웹 요청 로그 - 요청 처리 과정 추적
- name: org.springframework.web
level: INFO
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-info-appender

# 6. 트랜잭션 로그 - DB 작업 추적
- name: org.springframework.transaction
level: INFO
additivity: "false"
AppenderRef:
- ref: console-appender
- ref: file-info-appender