-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
v0.0.6
- Loading branch information
Showing
17 changed files
with
229 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,7 @@ out/ | |
.vscode/ | ||
|
||
### Custom ### | ||
logs | ||
*.env | ||
*.DS_Store | ||
/src/main/generated | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
src/main/java/com/depromeet/stonebed/domain/fcm/dao/FcmRepositoryCustom.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.depromeet.stonebed.domain.fcm.dao; | ||
|
||
import java.util.List; | ||
|
||
public interface FcmRepositoryCustom { | ||
List<String> findAllValidTokens(); | ||
} |
34 changes: 34 additions & 0 deletions
34
src/main/java/com/depromeet/stonebed/domain/fcm/dao/FcmRepositoryImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.depromeet.stonebed.domain.fcm.dao; | ||
|
||
import static com.depromeet.stonebed.domain.fcm.domain.QFcmToken.*; | ||
import static com.depromeet.stonebed.domain.member.domain.QMember.*; | ||
|
||
import com.depromeet.stonebed.domain.member.domain.MemberStatus; | ||
import com.querydsl.core.types.dsl.BooleanExpression; | ||
import com.querydsl.jpa.impl.JPAQueryFactory; | ||
import java.util.List; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RequiredArgsConstructor | ||
public class FcmRepositoryImpl implements FcmRepositoryCustom { | ||
|
||
private final JPAQueryFactory jpaQueryFactory; | ||
|
||
@Override | ||
public List<String> findAllValidTokens() { | ||
return jpaQueryFactory | ||
.select(fcmToken.token) | ||
.from(fcmToken) | ||
.join(fcmToken.member, member) | ||
.where(isMemberStatusNormal(), isTokenNotNull()) | ||
.fetch(); | ||
} | ||
|
||
private BooleanExpression isMemberStatusNormal() { | ||
return member.status.eq(MemberStatus.NORMAL); | ||
} | ||
|
||
private BooleanExpression isTokenNotNull() { | ||
return fcmToken.token.isNotNull(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
src/main/java/com/depromeet/stonebed/global/config/web/WebConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.depromeet.stonebed.global.config.web; | ||
|
||
import com.depromeet.stonebed.global.interceptor.MdcLoggingInterceptor; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; | ||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||
|
||
@Configuration | ||
@RequiredArgsConstructor | ||
public class WebConfig implements WebMvcConfigurer { | ||
|
||
private final MdcLoggingInterceptor mdcLoggingInterceptor; | ||
|
||
@Override | ||
public void addInterceptors(InterceptorRegistry registry) { | ||
registry.addInterceptor(mdcLoggingInterceptor); | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
src/main/java/com/depromeet/stonebed/global/interceptor/MdcLoggingInterceptor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package com.depromeet.stonebed.global.interceptor; | ||
|
||
import jakarta.servlet.http.HttpServletRequest; | ||
import jakarta.servlet.http.HttpServletResponse; | ||
import java.util.UUID; | ||
import org.slf4j.MDC; | ||
import org.springframework.stereotype.Component; | ||
import org.springframework.web.method.HandlerMethod; | ||
import org.springframework.web.servlet.HandlerInterceptor; | ||
|
||
@Component | ||
public class MdcLoggingInterceptor implements HandlerInterceptor { | ||
|
||
@Override | ||
public boolean preHandle( | ||
HttpServletRequest request, HttpServletResponse response, Object handler) | ||
throws Exception { | ||
// handler가 HandlerMethod인지 확인 | ||
if (handler instanceof HandlerMethod handlerMethod) { | ||
String handlerName = handlerMethod.getMethod().getName(); | ||
String methodName = handlerMethod.getBeanType().getSimpleName(); | ||
String controllerInfo = methodName + "." + handlerName; | ||
String traceId = UUID.randomUUID().toString(); | ||
MDC.put("traceId", traceId); | ||
MDC.put("serviceName", controllerInfo); | ||
} | ||
return true; | ||
} | ||
|
||
@Override | ||
public void afterCompletion( | ||
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) | ||
throws Exception { | ||
MDC.clear(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
<configuration scan="true" scanPeriod="60 seconds"> | ||
<springProfile name="local"> | ||
<!-- 개발 환경 로그 설정 --> | ||
<root level="DEBUG"> | ||
<appender-ref ref="STDOUT"/> | ||
<appender-ref ref="DEBUG_FILE"/> | ||
<appender-ref ref="INFO_FILE"/> | ||
<appender-ref ref="WARN_FILE"/> | ||
<appender-ref ref="ERROR_FILE"/> | ||
</root> | ||
</springProfile> | ||
<springProfile name="dev"> | ||
<!-- 개발 환경 로그 설정 --> | ||
<root level="DEBUG"> | ||
<appender-ref ref="STDOUT"/> | ||
<appender-ref ref="DEBUG_FILE"/> | ||
<appender-ref ref="INFO_FILE"/> | ||
<appender-ref ref="WARN_FILE"/> | ||
<appender-ref ref="ERROR_FILE"/> | ||
</root> | ||
</springProfile> | ||
|
||
<springProfile name="prod"> | ||
<!-- 프로덕션 환경 로그 설정 --> | ||
<root level="INFO"> | ||
<appender-ref ref="STDOUT"/> | ||
<appender-ref ref="INFO_FILE"/> | ||
<appender-ref ref="WARN_FILE"/> | ||
<appender-ref ref="ERROR_FILE"/> | ||
</root> | ||
</springProfile> | ||
|
||
<!-- Appender 설정 --> | ||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> | ||
<layout class="ch.qos.logback.classic.PatternLayout"> | ||
<pattern>{"traceId":"%X{traceId}","time":"%d{yyyy-MM-dd HH:mm:ss.SSS}", "service.name":"%X{serviceName}", "level":"%level", "message":"%msg"}%n</pattern> | ||
</layout> | ||
</encoder> | ||
</appender> | ||
|
||
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
<file>./logs/debug.log</file> | ||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
<fileNamePattern>./logs/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> | ||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
<maxFileSize>10MB</maxFileSize> | ||
</timeBasedFileNamingAndTriggeringPolicy> | ||
</rollingPolicy> | ||
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/> | ||
</appender> | ||
|
||
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
<file>./logs/info.log</file> | ||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
<fileNamePattern>./logs/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> | ||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
<maxFileSize>10MB</maxFileSize> | ||
</timeBasedFileNamingAndTriggeringPolicy> | ||
</rollingPolicy> | ||
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/> | ||
</appender> | ||
|
||
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
<file>./logs/warn.log</file> | ||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
<fileNamePattern>./logs/warn.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> | ||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
<maxFileSize>10MB</maxFileSize> | ||
</timeBasedFileNamingAndTriggeringPolicy> | ||
</rollingPolicy> | ||
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/> | ||
</appender> | ||
|
||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
<file>./logs/error.log</file> | ||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
<fileNamePattern>./logs/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> | ||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
<maxFileSize>10MB</maxFileSize> | ||
</timeBasedFileNamingAndTriggeringPolicy> | ||
</rollingPolicy> | ||
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/> | ||
</appender> | ||
</configuration> |
Oops, something went wrong.