Skip to content

Commit 8c3584f

Browse files
authored
release: 1.2.3 (#250)
2 parents 70fc6c4 + ce1864e commit 8c3584f

File tree

7 files changed

+41
-18
lines changed

7 files changed

+41
-18
lines changed

.github/workflows/deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ jobs:
8181
platforms: linux/arm64/v8
8282
push: true
8383
tags: |
84-
ghcr.io/devxb/gitanimals-filebeat:latest
84+
ghcr.io/devxb/gitanimals-filebeat:${{ steps.extract_version_name.outputs.version }}
8585
8686
deploy:
8787
needs: build
@@ -120,5 +120,5 @@ jobs:
120120
- name: run file beats
121121
if: env.status == 'stopped'
122122
run: |
123-
sudo docker run -d --name filebeat -v logs:/logs -t ghcr.io/devxb/gitanimals-filebeat:latest
123+
sudo docker run -d --name filebeat -v logs:/logs -t ghcr.io/devxb/gitanimals-filebeat:${{ steps.extract_version_name.outputs.version }}
124124

src/main/kotlin/org/gitanimals/core/filter/MDCFilter.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import jakarta.servlet.FilterChain
44
import jakarta.servlet.http.HttpServletRequest
55
import jakarta.servlet.http.HttpServletResponse
66
import org.gitanimals.core.IdGenerator
7+
import org.slf4j.LoggerFactory
78
import org.slf4j.MDC
89
import org.springframework.stereotype.Component
910
import org.springframework.web.filter.OncePerRequestFilter
11+
import kotlin.system.measureTimeMillis
1012

1113
@Component
1214
class MDCFilter : OncePerRequestFilter() {
@@ -16,17 +18,30 @@ class MDCFilter : OncePerRequestFilter() {
1618
response: HttpServletResponse,
1719
filterChain: FilterChain
1820
) {
21+
val logger = LoggerFactory.getLogger("Request logger")
22+
1923
runCatching {
2024
val traceId: String = request.getHeader("traceId") ?: IdGenerator.generate().toString()
2125

2226
MDC.put(TRACE_ID, traceId)
23-
filterChain.doFilter(request, response)
27+
MDC.put(PATH, request.requestURI)
28+
29+
val elapsedTime = measureTimeMillis {
30+
filterChain.doFilter(request, response)
31+
}
32+
MDC.put(ELAPSED_TIME, elapsedTime.toString())
33+
}.onSuccess {
34+
logger.info("Request Success with status ${response.status}")
2435
}.also {
2536
MDC.remove(TRACE_ID)
37+
MDC.remove(ELAPSED_TIME)
38+
MDC.remove(PATH)
2639
}
2740
}
2841

2942
companion object {
3043
const val TRACE_ID = "traceId"
44+
const val ELAPSED_TIME = "elapsedTime"
45+
const val PATH = "path"
3146
}
3247
}

src/main/kotlin/org/gitanimals/guild/infra/HttpClientConfigurer.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.gitanimals.guild.infra
22

3+
import org.gitanimals.core.filter.MDCFilter.Companion.TRACE_ID
34
import org.gitanimals.guild.app.IdentityApi
45
import org.gitanimals.guild.app.RenderApi
6+
import org.slf4j.MDC
57
import org.springframework.context.annotation.Bean
68
import org.springframework.context.annotation.Configuration
79
import org.springframework.context.annotation.Profile
@@ -17,6 +19,9 @@ class HttpClientConfigurer {
1719
fun identityApiHttpClient(): IdentityApi {
1820
val restClient = RestClient
1921
.builder()
22+
.defaultHeaders {
23+
it.add(TRACE_ID, MDC.get(TRACE_ID))
24+
}
2025
.defaultStatusHandler(httpClientErrorHandler())
2126
.baseUrl("https://api.gitanimals.org")
2227
.build()
@@ -32,6 +37,9 @@ class HttpClientConfigurer {
3237
fun renderApiHttpClient(): RenderApi {
3338
val restClient = RestClient
3439
.builder()
40+
.defaultHeaders {
41+
it.add(TRACE_ID, MDC.get(TRACE_ID))
42+
}
3543
.defaultStatusHandler(httpClientErrorHandler())
3644
.baseUrl("https://render.gitanimals.org")
3745
.build()

src/main/kotlin/org/gitanimals/render/controller/AnimationController.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package org.gitanimals.render.controller
22

33
import jakarta.servlet.http.HttpServletResponse
4-
import org.gitanimals.render.app.AnimationFacade
54
import org.gitanimals.core.Mode
6-
import org.slf4j.LoggerFactory
5+
import org.gitanimals.render.app.AnimationFacade
76
import org.springframework.http.HttpHeaders
87
import org.springframework.web.bind.annotation.GetMapping
98
import org.springframework.web.bind.annotation.PathVariable
@@ -15,13 +14,6 @@ class AnimationController(
1514
private val animationFacade: AnimationFacade,
1615
) {
1716

18-
private val logger = LoggerFactory.getLogger(this::class.simpleName)
19-
20-
@GetMapping("/for-logging-test")
21-
fun forLoggingTest() {
22-
logger.warn("For logging test")
23-
}
24-
2517
@GetMapping(value = ["/farms/{username}"], produces = ["image/svg+xml"])
2618
fun getFarmSvgAnimation(
2719
@PathVariable("username") username: String,

src/main/kotlin/org/gitanimals/render/infra/RestIdentityApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.gitanimals.render.infra
22

33
import org.gitanimals.core.AUTHORIZATION_EXCEPTION
4+
import org.gitanimals.core.filter.MDCFilter.Companion.TRACE_ID
45
import org.gitanimals.render.app.IdentityApi
6+
import org.slf4j.MDC
57
import org.springframework.http.HttpHeaders
68
import org.springframework.stereotype.Component
79
import org.springframework.web.client.RestClient
@@ -15,6 +17,7 @@ class RestIdentityApi : IdentityApi {
1517
return restClient.get()
1618
.uri("/users")
1719
.header(HttpHeaders.AUTHORIZATION, token)
20+
.header(TRACE_ID, MDC.get(TRACE_ID))
1821
.exchange { _, response ->
1922
runCatching {
2023
response.bodyTo(IdentityApi.UserResponse::class.java)

src/main/resources/application.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
spring.profiles.active=prod
2+
13
server.name=gitanimals-render
24
server.port=8080
35

@@ -32,4 +34,4 @@ spring.application.name=render.gitanimals
3234
management.endpoints.web.exposure.include=prometheus
3335
management.metrics.tags.application=${spring.application.name}
3436

35-
logging.level.root=WARN
37+
logging.level.root=INFO

src/main/resources/logback.xml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
<springProperty name="slackToken" source="slack.token"/>
77
<property name="LOG_PATH" value="${LOG_PATH:-./logs}"/>
88
<property name="LOG_FILE" value="${LOG_FILE:-app}"/>
9-
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread] %-5level %logger{36} - %msg%n"/>
9+
<property name="LOG_PATTERN"
10+
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread] %-5level %logger{36} - %msg%n"/>
1011
<property name="MAX_HISTORY" value="${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-1}"/>
1112

1213
<appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
@@ -27,20 +28,22 @@
2728
<maxHistory>${MAX_HISTORY}</maxHistory>
2829
</rollingPolicy>
2930
</appender>
30-
<appender name = "ASYNC_ENC_JSON_FILE_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
31+
<appender name="ASYNC_ENC_JSON_FILE_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
3132
<appender-ref ref="ECS_JSON_FILE_APPENDER"/>
3233
</appender>
3334

3435
<appender name="SLACK_APPENDER" class="org.gitanimals.core.appender.SlackAppender">
35-
<param name="token" value="${slackToken}" />
36+
<param name="token" value="${slackToken}"/>
3637
</appender>
3738
<appender name="ASYNC_SLACK_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
38-
<appender-ref ref="SLACK_APPENDER" />
39+
<appender-ref ref="SLACK_APPENDER"/>
3940
</appender>
4041

4142
<root level="${LOG_LEVEL}">
4243
<appender-ref ref="ASYNC_ENC_JSON_FILE_APPENDER"/>
43-
<appender-ref ref="ASYNC_SLACK_APPENDER"/>
44+
<springProfile name="prod">
45+
<appender-ref ref="ASYNC_SLACK_APPENDER"/>
46+
</springProfile>
4447
<springProfile name="test">
4548
<appender-ref ref="CONSOLE_APPENDER"/>
4649
</springProfile>

0 commit comments

Comments
 (0)