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
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,17 @@ public LogBuilder appendExecutionTime() throws Throwable {

public LogBuilder appendClientIP() {
String clientIP = request.getRemoteAddr();
append(CLIENT_IP + clientIP);
String maskedIP;
if (clientIP.contains(".")) {
// IPv4 마스킹: 앞 두 옥텟만 표시
maskedIP = clientIP.replaceAll("^(\\d+\\.\\d+)\\.\\d+\\.\\d+$", "$1.*.*");
} else if (clientIP.contains(":")) {
// IPv6 마스킹: 앞 2개 그룹만 표시
maskedIP = clientIP.replaceAll("^(([0-9a-fA-F]{0,4}:){1,2}).*", "$1::");
} else {
maskedIP = clientIP;
}
append(CLIENT_IP + maskedIP);
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public Object logExceptionHandling(ProceedingJoinPoint joinPoint) throws Throwab
.appendResponseBody()
.appendRequestParameter();

log.warn(logBuilder.appendExecutionTime().appendClientIP().toString());
log.trace("원인: ", ex);
log.error(logBuilder.appendExecutionTime().appendClientIP().toString());
log.debug("원인: ", ex);

return logBuilder.getResult();
}
Expand Down
8 changes: 4 additions & 4 deletions backend/src/main/resources/application-prod.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
spring:
datasource:
url: jdbc:mysql://prod-db-host:3306/planit_prod?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
url: jdbc:mysql://localhost:3306/planit_prod?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: prod_user
password: prod_password
username: root
password: web3411

jpa:
hibernate:
Expand All @@ -13,4 +13,4 @@ spring:
dialect: org.hibernate.dialect.MySQL8Dialect
format_sql: false
use_sql_comments: false
default_batch_fetch_size: 100
default_batch_fetch_size: 100
72 changes: 48 additions & 24 deletions backend/src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,56 @@
value="%green([%d{yyyy-MM-dd HH:mm:ss.SSS}]) [%thread] %highlight([%level]) %cyan(%logger{36}) >> %msg%n"/>
<springProperty scope="context" name="PROFILE" source="spring.profiles.active"/>

<!-- 콘솔 출력 (INFO 이상 출력, 색상 적용) -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>${LOG_PATTERN_COLORED}</pattern>
</encoder>
</appender>
<!-- test, local 프로파일 설정 -->
<!-- 콘솔 출력: debug 부터, 로그 저장: debug 부터 -->
<springProfile name="test,local">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN_COLORED}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
backend/logs/main/%d{yyyy-MM-dd}/${PROFILE}_%d{yyyyMMdd_HH}_%i.log
</fileNamePattern>
<maxFileSize>20MB</maxFileSize>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
</springProfile>

<!-- 로그 파일 저장 (전체 레벨 저장, 색상 없음) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
backend/logs/main/%d{yyyy-MM-dd}/${PROFILE}_%d{yyyyMMdd_HHmmss}_%i.log.gz
</fileNamePattern>
<maxFileSize>20MB</maxFileSize>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- dev, prod 프로파일 설정 (ubuntu 서버 전용) -->
<!-- 콘솔 출력: info 부터, 로그 저장: debug 부터 -->
<springProfile name="dev,prod">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>${LOG_PATTERN_COLORED}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
/home/ubuntu/logs/${PROFILE}/%d{yyyyMMdd_HH}_%i.log
</fileNamePattern>
<maxFileSize>20MB</maxFileSize>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
</springProfile>

<!-- 기본 로그 레벨 (콘솔은 필터링하여 INFO 부터 출력) -->
<root level="TRACE">

<!-- 기본 로그 레벨 -->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
Expand Down