From 08a6c7b57a0c0fc466f5d19558a796d533f0ff27 Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:28:39 +0900 Subject: [PATCH 01/13] =?UTF-8?q?chore=20#32:=20config=20import=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20eureka=20=ED=94=84=EB=A1=9C=ED=95=84=20import=20?= =?UTF-8?q?=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 394e028..2dcfa50 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -3,13 +3,14 @@ spring: name: member-service profiles: group: - "local": "local, default-datasource, default-db-management, default-redis, security, eureka, openfeign, actuator" - "docker": "docker, default-datasource, default-db-management, default-redis, security, eureka, openfeign, actuator" - "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, eureka, openfeign, actuator" + "local": "local, default-datasource, default-db-management, default-redis, security, openfeign, actuator" + "docker": "docker, default-datasource, default-db-management, default-redis, security, openfeign, actuator" + "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, openfeign, actuator" active: ${PROFILE_ACTIVE:local} - config: - import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888} +# config: +# import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888} + # #logback: # log-path: ./logs From 37cfe7d2087201b505246b13170d803425d14dd3 Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:29:12 +0900 Subject: [PATCH 02/13] =?UTF-8?q?chore=20#32:=20eureka=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1/=EC=84=A4=EC=A0=95=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 --- .../java/com/irum/memberservice/MemberServiceApplication.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/build.gradle b/build.gradle index f1131f5..1131a98 100644 --- a/build.gradle +++ b/build.gradle @@ -117,9 +117,6 @@ dependencies { implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-registry-prometheus' - // Service-Discovery - implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' - // common module implementation 'com.irum:open-feign-client:0.0.4-SNAPSHOT' implementation 'com.irum:global-module:0.1.8-SNAPSHOT' diff --git a/src/main/java/com/irum/memberservice/MemberServiceApplication.java b/src/main/java/com/irum/memberservice/MemberServiceApplication.java index 0ff8cca..d83c165 100644 --- a/src/main/java/com/irum/memberservice/MemberServiceApplication.java +++ b/src/main/java/com/irum/memberservice/MemberServiceApplication.java @@ -2,10 +2,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication -@EnableDiscoveryClient public class MemberServiceApplication { public static void main(String[] args) { From 41bbd3c983eef2ceeaf339134a47d40af2aeae54 Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:30:22 +0900 Subject: [PATCH 03/13] =?UTF-8?q?chore=20#32:=20config=20server=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A3=BC=EC=84=9D=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1131a98..75dfe99 100644 --- a/build.gradle +++ b/build.gradle @@ -109,8 +109,8 @@ dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' implementation 'io.github.openfeign:feign-gson:11.0' - // Config-Server - implementation 'org.springframework.cloud:spring-cloud-starter-config' +// // Config-Server +// implementation 'org.springframework.cloud:spring-cloud-starter-config' // Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' From 22cbcd7aae28baee0dbf3c71c02a855762c6aeef Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sun, 30 Nov 2025 22:14:30 +0900 Subject: [PATCH 04/13] =?UTF-8?q?chore=20#32:=20Config=20repo=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=99=98=EA=B2=BD=EC=84=A4=EC=A0=95=20=EC=9D=B4?= =?UTF-8?q?=EA=B4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-actuator.yaml | 10 ++++++ .../application-default-datasource.yaml | 26 +++++++++++++++ .../resources/application-default-redis.yaml | 9 ++++++ .../application-defualt-db-management.yaml | 8 +++++ src/main/resources/application-docker.yaml | 7 ++++ src/main/resources/application-eureka.yaml | 18 +++++++++++ src/main/resources/application-local.yaml | 7 ++++ src/main/resources/application-openfeign.yaml | 11 +++++++ .../application-prod-data-redis.yaml | 11 +++++++ .../application-prod-datasource.yaml | 32 +++++++++++++++++++ .../application-prod-db-management.yaml | 8 +++++ src/main/resources/application-prod.yaml | 7 ++++ src/main/resources/application-security.yaml | 10 ++++++ 13 files changed, 164 insertions(+) create mode 100644 src/main/resources/application-actuator.yaml create mode 100644 src/main/resources/application-default-datasource.yaml create mode 100644 src/main/resources/application-default-redis.yaml create mode 100644 src/main/resources/application-defualt-db-management.yaml create mode 100644 src/main/resources/application-docker.yaml create mode 100644 src/main/resources/application-eureka.yaml create mode 100644 src/main/resources/application-local.yaml create mode 100644 src/main/resources/application-openfeign.yaml create mode 100644 src/main/resources/application-prod-data-redis.yaml create mode 100644 src/main/resources/application-prod-datasource.yaml create mode 100644 src/main/resources/application-prod-db-management.yaml create mode 100644 src/main/resources/application-prod.yaml create mode 100644 src/main/resources/application-security.yaml diff --git a/src/main/resources/application-actuator.yaml b/src/main/resources/application-actuator.yaml new file mode 100644 index 0000000..a4a0e9a --- /dev/null +++ b/src/main/resources/application-actuator.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: "actuator" + +management: + endpoints: + web: + exposure: + include: refresh, health, beans, httpexchanges, busrefresh, info, metrics, prometheus diff --git a/src/main/resources/application-default-datasource.yaml b/src/main/resources/application-default-datasource.yaml new file mode 100644 index 0000000..b3512d4 --- /dev/null +++ b/src/main/resources/application-default-datasource.yaml @@ -0,0 +1,26 @@ +spring: + config: + activate: + on-profile: "default-datasource" + + datasource: + url: jdbc:postgresql://${POSTGRESQL_HOST:localhost}:${POSTGRESQL_PORT:5432}/${DB_NAME:come2us} + username: ${POSTGRESQL_USERNAME:developer} + password: ${POSTGRESQL_PASSWORD:1234} + driver-class-name: org.postgresql.Driver + jpa: + show-sql: false + properties: + hibernate: + hibernate.format_sql: true + hibernate.highlight_sql: true + hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 200 + default_batch_fetch_size: 100 + hibernate: + ddl-auto: validate + database-platform: org.hibernate.dialect.PostgreSQLDialect + defer-datasource-initialization: false + sql: + init: + mode: never + encoding: UTF-8 \ No newline at end of file diff --git a/src/main/resources/application-default-redis.yaml b/src/main/resources/application-default-redis.yaml new file mode 100644 index 0000000..902c21c --- /dev/null +++ b/src/main/resources/application-default-redis.yaml @@ -0,0 +1,9 @@ +spring: + config: + activate: + on-profile: "default-redis" + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} \ No newline at end of file diff --git a/src/main/resources/application-defualt-db-management.yaml b/src/main/resources/application-defualt-db-management.yaml new file mode 100644 index 0000000..b153c21 --- /dev/null +++ b/src/main/resources/application-defualt-db-management.yaml @@ -0,0 +1,8 @@ +spring: + config: + activate: + on-profile: "default-db-management" + + liquibase: + enabled: true + change-log: "classpath:db/changelog/db.changelog-master.yaml" diff --git a/src/main/resources/application-docker.yaml b/src/main/resources/application-docker.yaml new file mode 100644 index 0000000..19cbceb --- /dev/null +++ b/src/main/resources/application-docker.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "docker" + +server: + port: ${MEMBER_PORT:60001} \ No newline at end of file diff --git a/src/main/resources/application-eureka.yaml b/src/main/resources/application-eureka.yaml new file mode 100644 index 0000000..3176b78 --- /dev/null +++ b/src/main/resources/application-eureka.yaml @@ -0,0 +1,18 @@ +spring: + config: + activate: + on-profile: "eureka" + +eureka: + client: + register-with-eureka: true + fetch-registry: true + service-url: + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka + instance: + prefer-ip-address: false + hostname: ${MEMBER_HOSTNAME:member.come2us.local} + ip-address: ${MEMBER_HOSTNAME} + instance-id: ${MEMBER_HOSTNAME}:${MEMBER_PORT} + metadata-map: + port: ${MEMBER_PORT} diff --git a/src/main/resources/application-local.yaml b/src/main/resources/application-local.yaml new file mode 100644 index 0000000..4030f76 --- /dev/null +++ b/src/main/resources/application-local.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "local" + +server: + port: ${MEMBER_PORT:8081} \ No newline at end of file diff --git a/src/main/resources/application-openfeign.yaml b/src/main/resources/application-openfeign.yaml new file mode 100644 index 0000000..ead9e66 --- /dev/null +++ b/src/main/resources/application-openfeign.yaml @@ -0,0 +1,11 @@ +spring: + config: + activate: + on-profile: "openfeign" + +feign: + client: + config: + default: + connectTimeout: 5000 + readTimeout: 5000 \ No newline at end of file diff --git a/src/main/resources/application-prod-data-redis.yaml b/src/main/resources/application-prod-data-redis.yaml new file mode 100644 index 0000000..f0950e0 --- /dev/null +++ b/src/main/resources/application-prod-data-redis.yaml @@ -0,0 +1,11 @@ +spring: + config: + activate: + on-profile: "prod-data-redis" + data: + redis: + host: ${DATA_REDIS_HOST} + port: ${DATA_REDIS_PORT} + password: ${DATA_REDIS_PASSWORD} + ssl: + enabled: true diff --git a/src/main/resources/application-prod-datasource.yaml b/src/main/resources/application-prod-datasource.yaml new file mode 100644 index 0000000..75dd9b9 --- /dev/null +++ b/src/main/resources/application-prod-datasource.yaml @@ -0,0 +1,32 @@ +spring: + config: + activate: + on-profile: "prod-datasource" + + datasource: + write: + jdbc-url: jdbc:postgresql://${WRITE_POSTGRESQL_HOST}:${WRITE_POSTGRESQL_PORT}/${WRITE_DB_NAME} + username: ${WRITE_POSTGRESQL_USERNAME} + password: ${WRITE_POSTGRESQL_PASSWORD} + driver-class-name: org.postgresql.Driver + read: + jdbc-url: jdbc:postgresql://${READ_POSTGRESQL_HOST}:${READ_POSTGRESQL_PORT}/${READ_DB_NAME} + username: ${READ_POSTGRESQL_USERNAME} + password: ${READ_POSTGRESQL_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + show-sql: false + properties: + hibernate: + hibernate.format_sql: true + hibernate.highlight_sql: true + hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 200 + default_batch_fetch_size: 100 + hibernate: + ddl-auto: validate + database-platform: org.hibernate.dialect.PostgreSQLDialect + defer-datasource-initialization: false + sql: + init: + mode: never + encoding: UTF-8 \ No newline at end of file diff --git a/src/main/resources/application-prod-db-management.yaml b/src/main/resources/application-prod-db-management.yaml new file mode 100644 index 0000000..7496002 --- /dev/null +++ b/src/main/resources/application-prod-db-management.yaml @@ -0,0 +1,8 @@ +spring: + config: + activate: + on-profile: "prod-db-management" + + liquibase: + enabled: true + change-log: "classpath:db/changelog/db.changelog-master.yaml" diff --git a/src/main/resources/application-prod.yaml b/src/main/resources/application-prod.yaml new file mode 100644 index 0000000..ee6847f --- /dev/null +++ b/src/main/resources/application-prod.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "prod" + +server: + port: ${MEMBER_PORT} \ No newline at end of file diff --git a/src/main/resources/application-security.yaml b/src/main/resources/application-security.yaml new file mode 100644 index 0000000..80aafb3 --- /dev/null +++ b/src/main/resources/application-security.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: "security" +jwt: + access-token-secret: ${JWT_ACCESS_TOKEN_SECRET} + refresh-token-secret: ${JWT_REFRESH_TOKEN_SECRET} + access-token-expiration-time: ${JWT_ACCESS_TOKEN_EXPIRATION_TIME:7200} + refresh-token-expiration-time: ${JWT_REFRESH_TOKEN_EXPIRATION_TIME:172800} + issuer: ${JWT_ISSUER:irum} \ No newline at end of file From 653ed835431d52d65c36f241ad1c988d3cd022dd Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:28:39 +0900 Subject: [PATCH 05/13] =?UTF-8?q?chore=20#32:=20config=20import=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20eureka=20=ED=94=84=EB=A1=9C=ED=95=84=20import=20?= =?UTF-8?q?=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 394e028..2dcfa50 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -3,13 +3,14 @@ spring: name: member-service profiles: group: - "local": "local, default-datasource, default-db-management, default-redis, security, eureka, openfeign, actuator" - "docker": "docker, default-datasource, default-db-management, default-redis, security, eureka, openfeign, actuator" - "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, eureka, openfeign, actuator" + "local": "local, default-datasource, default-db-management, default-redis, security, openfeign, actuator" + "docker": "docker, default-datasource, default-db-management, default-redis, security, openfeign, actuator" + "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, openfeign, actuator" active: ${PROFILE_ACTIVE:local} - config: - import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888} +# config: +# import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888} + # #logback: # log-path: ./logs From c13d4de157795c66fe25dcaebf7c22b654db2f54 Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:29:12 +0900 Subject: [PATCH 06/13] =?UTF-8?q?chore=20#32:=20eureka=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1/=EC=84=A4=EC=A0=95=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 --- .../java/com/irum/memberservice/MemberServiceApplication.java | 2 -- 2 files changed, 5 deletions(-) diff --git a/build.gradle b/build.gradle index f1131f5..1131a98 100644 --- a/build.gradle +++ b/build.gradle @@ -117,9 +117,6 @@ dependencies { implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-registry-prometheus' - // Service-Discovery - implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' - // common module implementation 'com.irum:open-feign-client:0.0.4-SNAPSHOT' implementation 'com.irum:global-module:0.1.8-SNAPSHOT' diff --git a/src/main/java/com/irum/memberservice/MemberServiceApplication.java b/src/main/java/com/irum/memberservice/MemberServiceApplication.java index 0ff8cca..d83c165 100644 --- a/src/main/java/com/irum/memberservice/MemberServiceApplication.java +++ b/src/main/java/com/irum/memberservice/MemberServiceApplication.java @@ -2,10 +2,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication -@EnableDiscoveryClient public class MemberServiceApplication { public static void main(String[] args) { From 17de54e7904acd5e63352b89ada8a6184f497294 Mon Sep 17 00:00:00 2001 From: willjsw Date: Wed, 26 Nov 2025 16:30:22 +0900 Subject: [PATCH 07/13] =?UTF-8?q?chore=20#32:=20config=20server=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A3=BC=EC=84=9D=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1131a98..75dfe99 100644 --- a/build.gradle +++ b/build.gradle @@ -109,8 +109,8 @@ dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' implementation 'io.github.openfeign:feign-gson:11.0' - // Config-Server - implementation 'org.springframework.cloud:spring-cloud-starter-config' +// // Config-Server +// implementation 'org.springframework.cloud:spring-cloud-starter-config' // Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' From 46d9977cc7d325321c151d253d8b9c1a0234268c Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Sun, 30 Nov 2025 22:14:30 +0900 Subject: [PATCH 08/13] =?UTF-8?q?chore=20#32:=20Config=20repo=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=99=98=EA=B2=BD=EC=84=A4=EC=A0=95=20=EC=9D=B4?= =?UTF-8?q?=EA=B4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-actuator.yaml | 10 ++++++ .../application-default-datasource.yaml | 26 +++++++++++++++ .../resources/application-default-redis.yaml | 9 ++++++ .../application-defualt-db-management.yaml | 8 +++++ src/main/resources/application-docker.yaml | 7 ++++ src/main/resources/application-eureka.yaml | 18 +++++++++++ src/main/resources/application-local.yaml | 7 ++++ src/main/resources/application-openfeign.yaml | 11 +++++++ .../application-prod-data-redis.yaml | 11 +++++++ .../application-prod-datasource.yaml | 32 +++++++++++++++++++ .../application-prod-db-management.yaml | 8 +++++ src/main/resources/application-prod.yaml | 7 ++++ src/main/resources/application-security.yaml | 10 ++++++ 13 files changed, 164 insertions(+) create mode 100644 src/main/resources/application-actuator.yaml create mode 100644 src/main/resources/application-default-datasource.yaml create mode 100644 src/main/resources/application-default-redis.yaml create mode 100644 src/main/resources/application-defualt-db-management.yaml create mode 100644 src/main/resources/application-docker.yaml create mode 100644 src/main/resources/application-eureka.yaml create mode 100644 src/main/resources/application-local.yaml create mode 100644 src/main/resources/application-openfeign.yaml create mode 100644 src/main/resources/application-prod-data-redis.yaml create mode 100644 src/main/resources/application-prod-datasource.yaml create mode 100644 src/main/resources/application-prod-db-management.yaml create mode 100644 src/main/resources/application-prod.yaml create mode 100644 src/main/resources/application-security.yaml diff --git a/src/main/resources/application-actuator.yaml b/src/main/resources/application-actuator.yaml new file mode 100644 index 0000000..a4a0e9a --- /dev/null +++ b/src/main/resources/application-actuator.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: "actuator" + +management: + endpoints: + web: + exposure: + include: refresh, health, beans, httpexchanges, busrefresh, info, metrics, prometheus diff --git a/src/main/resources/application-default-datasource.yaml b/src/main/resources/application-default-datasource.yaml new file mode 100644 index 0000000..b3512d4 --- /dev/null +++ b/src/main/resources/application-default-datasource.yaml @@ -0,0 +1,26 @@ +spring: + config: + activate: + on-profile: "default-datasource" + + datasource: + url: jdbc:postgresql://${POSTGRESQL_HOST:localhost}:${POSTGRESQL_PORT:5432}/${DB_NAME:come2us} + username: ${POSTGRESQL_USERNAME:developer} + password: ${POSTGRESQL_PASSWORD:1234} + driver-class-name: org.postgresql.Driver + jpa: + show-sql: false + properties: + hibernate: + hibernate.format_sql: true + hibernate.highlight_sql: true + hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 200 + default_batch_fetch_size: 100 + hibernate: + ddl-auto: validate + database-platform: org.hibernate.dialect.PostgreSQLDialect + defer-datasource-initialization: false + sql: + init: + mode: never + encoding: UTF-8 \ No newline at end of file diff --git a/src/main/resources/application-default-redis.yaml b/src/main/resources/application-default-redis.yaml new file mode 100644 index 0000000..902c21c --- /dev/null +++ b/src/main/resources/application-default-redis.yaml @@ -0,0 +1,9 @@ +spring: + config: + activate: + on-profile: "default-redis" + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} \ No newline at end of file diff --git a/src/main/resources/application-defualt-db-management.yaml b/src/main/resources/application-defualt-db-management.yaml new file mode 100644 index 0000000..b153c21 --- /dev/null +++ b/src/main/resources/application-defualt-db-management.yaml @@ -0,0 +1,8 @@ +spring: + config: + activate: + on-profile: "default-db-management" + + liquibase: + enabled: true + change-log: "classpath:db/changelog/db.changelog-master.yaml" diff --git a/src/main/resources/application-docker.yaml b/src/main/resources/application-docker.yaml new file mode 100644 index 0000000..19cbceb --- /dev/null +++ b/src/main/resources/application-docker.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "docker" + +server: + port: ${MEMBER_PORT:60001} \ No newline at end of file diff --git a/src/main/resources/application-eureka.yaml b/src/main/resources/application-eureka.yaml new file mode 100644 index 0000000..3176b78 --- /dev/null +++ b/src/main/resources/application-eureka.yaml @@ -0,0 +1,18 @@ +spring: + config: + activate: + on-profile: "eureka" + +eureka: + client: + register-with-eureka: true + fetch-registry: true + service-url: + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka + instance: + prefer-ip-address: false + hostname: ${MEMBER_HOSTNAME:member.come2us.local} + ip-address: ${MEMBER_HOSTNAME} + instance-id: ${MEMBER_HOSTNAME}:${MEMBER_PORT} + metadata-map: + port: ${MEMBER_PORT} diff --git a/src/main/resources/application-local.yaml b/src/main/resources/application-local.yaml new file mode 100644 index 0000000..4030f76 --- /dev/null +++ b/src/main/resources/application-local.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "local" + +server: + port: ${MEMBER_PORT:8081} \ No newline at end of file diff --git a/src/main/resources/application-openfeign.yaml b/src/main/resources/application-openfeign.yaml new file mode 100644 index 0000000..ead9e66 --- /dev/null +++ b/src/main/resources/application-openfeign.yaml @@ -0,0 +1,11 @@ +spring: + config: + activate: + on-profile: "openfeign" + +feign: + client: + config: + default: + connectTimeout: 5000 + readTimeout: 5000 \ No newline at end of file diff --git a/src/main/resources/application-prod-data-redis.yaml b/src/main/resources/application-prod-data-redis.yaml new file mode 100644 index 0000000..f0950e0 --- /dev/null +++ b/src/main/resources/application-prod-data-redis.yaml @@ -0,0 +1,11 @@ +spring: + config: + activate: + on-profile: "prod-data-redis" + data: + redis: + host: ${DATA_REDIS_HOST} + port: ${DATA_REDIS_PORT} + password: ${DATA_REDIS_PASSWORD} + ssl: + enabled: true diff --git a/src/main/resources/application-prod-datasource.yaml b/src/main/resources/application-prod-datasource.yaml new file mode 100644 index 0000000..75dd9b9 --- /dev/null +++ b/src/main/resources/application-prod-datasource.yaml @@ -0,0 +1,32 @@ +spring: + config: + activate: + on-profile: "prod-datasource" + + datasource: + write: + jdbc-url: jdbc:postgresql://${WRITE_POSTGRESQL_HOST}:${WRITE_POSTGRESQL_PORT}/${WRITE_DB_NAME} + username: ${WRITE_POSTGRESQL_USERNAME} + password: ${WRITE_POSTGRESQL_PASSWORD} + driver-class-name: org.postgresql.Driver + read: + jdbc-url: jdbc:postgresql://${READ_POSTGRESQL_HOST}:${READ_POSTGRESQL_PORT}/${READ_DB_NAME} + username: ${READ_POSTGRESQL_USERNAME} + password: ${READ_POSTGRESQL_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + show-sql: false + properties: + hibernate: + hibernate.format_sql: true + hibernate.highlight_sql: true + hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 200 + default_batch_fetch_size: 100 + hibernate: + ddl-auto: validate + database-platform: org.hibernate.dialect.PostgreSQLDialect + defer-datasource-initialization: false + sql: + init: + mode: never + encoding: UTF-8 \ No newline at end of file diff --git a/src/main/resources/application-prod-db-management.yaml b/src/main/resources/application-prod-db-management.yaml new file mode 100644 index 0000000..7496002 --- /dev/null +++ b/src/main/resources/application-prod-db-management.yaml @@ -0,0 +1,8 @@ +spring: + config: + activate: + on-profile: "prod-db-management" + + liquibase: + enabled: true + change-log: "classpath:db/changelog/db.changelog-master.yaml" diff --git a/src/main/resources/application-prod.yaml b/src/main/resources/application-prod.yaml new file mode 100644 index 0000000..ee6847f --- /dev/null +++ b/src/main/resources/application-prod.yaml @@ -0,0 +1,7 @@ +spring: + config: + activate: + on-profile: "prod" + +server: + port: ${MEMBER_PORT} \ No newline at end of file diff --git a/src/main/resources/application-security.yaml b/src/main/resources/application-security.yaml new file mode 100644 index 0000000..80aafb3 --- /dev/null +++ b/src/main/resources/application-security.yaml @@ -0,0 +1,10 @@ +spring: + config: + activate: + on-profile: "security" +jwt: + access-token-secret: ${JWT_ACCESS_TOKEN_SECRET} + refresh-token-secret: ${JWT_REFRESH_TOKEN_SECRET} + access-token-expiration-time: ${JWT_ACCESS_TOKEN_EXPIRATION_TIME:7200} + refresh-token-expiration-time: ${JWT_REFRESH_TOKEN_EXPIRATION_TIME:172800} + issuer: ${JWT_ISSUER:irum} \ No newline at end of file From fb748e321d1f7255488e01b4d1332c37079a7358 Mon Sep 17 00:00:00 2001 From: Bal1oon Date: Tue, 2 Dec 2025 17:08:57 +0900 Subject: [PATCH 09/13] =?UTF-8?q?refactor=20#38:=20JWT=20=EC=84=9C?= =?UTF-8?q?=EB=AA=85=20=EC=95=8C=EA=B3=A0=EB=A6=AC=EC=A6=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../properties/JwtProperties.java | 4 +- .../global/security/jwt/JwtUtil.java | 131 ++++++++++++------ src/main/resources/application-base-url.yaml | 15 ++ src/main/resources/application-security.yaml | 3 +- src/main/resources/application.yaml | 6 +- 6 files changed, 116 insertions(+), 45 deletions(-) create mode 100644 src/main/resources/application-base-url.yaml diff --git a/build.gradle b/build.gradle index 75dfe99..40db7e5 100644 --- a/build.gradle +++ b/build.gradle @@ -118,7 +118,7 @@ dependencies { implementation 'io.micrometer:micrometer-registry-prometheus' // common module - implementation 'com.irum:open-feign-client:0.0.4-SNAPSHOT' + implementation 'com.irum:open-feign-client:1.1.0-SNAPSHOT' implementation 'com.irum:global-module:0.1.8-SNAPSHOT' // Liquibase diff --git a/src/main/java/com/irum/memberservice/global/infrastructure/properties/JwtProperties.java b/src/main/java/com/irum/memberservice/global/infrastructure/properties/JwtProperties.java index 3ea35e9..be9f7c7 100644 --- a/src/main/java/com/irum/memberservice/global/infrastructure/properties/JwtProperties.java +++ b/src/main/java/com/irum/memberservice/global/infrastructure/properties/JwtProperties.java @@ -4,11 +4,13 @@ @ConfigurationProperties(prefix = "jwt") public record JwtProperties( - String accessTokenSecret, + String accessTokenPrivateKey, + String accessTokenPublicKey, String refreshTokenSecret, Long accessTokenExpirationTime, Long refreshTokenExpirationTime, String issuer) { + public Long accessTokenExpirationMilliTime() { return accessTokenExpirationTime * 1000; } diff --git a/src/main/java/com/irum/memberservice/global/security/jwt/JwtUtil.java b/src/main/java/com/irum/memberservice/global/security/jwt/JwtUtil.java index c37390c..4491cf6 100644 --- a/src/main/java/com/irum/memberservice/global/security/jwt/JwtUtil.java +++ b/src/main/java/com/irum/memberservice/global/security/jwt/JwtUtil.java @@ -8,11 +8,17 @@ import com.irum.memberservice.global.infrastructure.properties.JwtProperties; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; -import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtParser; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; -import java.security.Key; +import java.security.KeyFactory; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; import java.util.Date; +import javax.crypto.SecretKey; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -21,6 +27,8 @@ public class JwtUtil { private final JwtProperties jwtProperties; + private PrivateKey accessTokenPrivateKey; + private PublicKey accessTokenPublicKey; public AccessTokenDto generateAccessTokenDto(Long memberId, Role authority) { Date issuedAt = new Date(); @@ -55,11 +63,11 @@ public String generateRefreshToken(Long memberId) { public AccessTokenDto parseAccessToken(String accessTokenValue) throws ExpiredJwtException { try { - Jws claims = getClaims(accessTokenValue, getAccessTokenKey()); + Claims claims = parseAccessTokenClaims(accessTokenValue); return AccessTokenDto.of( - Long.parseLong(claims.getBody().getSubject()), - Role.valueOf(claims.getBody().get(TOKEN_ROLE_NAME, String.class)), + Long.parseLong(claims.getSubject()), + Role.valueOf(claims.get(TOKEN_ROLE_NAME, String.class)), accessTokenValue); } catch (ExpiredJwtException e) { throw e; @@ -68,25 +76,12 @@ public AccessTokenDto parseAccessToken(String accessTokenValue) throws ExpiredJw } } - public String resolveToken(String headerValue) { - if (headerValue != null && headerValue.startsWith("Bearer ")) { - return headerValue.substring(7); - } - return null; - } - - public long getRemainingExpirationMillis(String tokenValue) { - Jws claims = getClaims(tokenValue, getAccessTokenKey()); - Date exp = claims.getBody().getExpiration(); - return Math.max(exp.getTime() - System.currentTimeMillis(), 0); - } - public RefreshTokenDto parseRefreshToken(String refreshTokenValue) throws ExpiredJwtException { try { - Jws claims = getClaims(refreshTokenValue, getRefreshTokenKey()); + Claims claims = parseRefreshTokenClaims(refreshTokenValue); return RefreshTokenDto.of( - Long.parseLong(claims.getBody().getSubject()), + Long.parseLong(claims.getSubject()), refreshTokenValue, jwtProperties.refreshTokenExpirationTime()); } catch (ExpiredJwtException e) { @@ -96,44 +91,102 @@ public RefreshTokenDto parseRefreshToken(String refreshTokenValue) throws Expire } } - private Jws getClaims(String token, Key key) { - return Jwts.parser() - .requireIssuer(jwtProperties.issuer()) - .setSigningKey(key) - .build() - .parseClaimsJws(token); + public long getRemainingExpirationMillis(String tokenValue) { + Claims claims = parseAccessTokenClaims(tokenValue); + Date exp = claims.getExpiration(); + return Math.max(exp.getTime() - System.currentTimeMillis(), 0); } public long getRefreshTokenExpirationTime() { return jwtProperties.refreshTokenExpirationTime(); } - private Key getAccessTokenKey() { - return Keys.hmacShaKeyFor(jwtProperties.accessTokenSecret().getBytes()); + // Private 헬퍼 메서드들 + + private Claims parseAccessTokenClaims(String token) { + JwtParser parser = + Jwts.parser() + .verifyWith(getAccessTokenPublicKey()) + .requireIssuer(jwtProperties.issuer()) + .build(); + + return parser.parseSignedClaims(token).getPayload(); + } + + private Claims parseRefreshTokenClaims(String token) { + JwtParser parser = + Jwts.parser() + .verifyWith(getRefreshTokenKey()) + .requireIssuer(jwtProperties.issuer()) + .build(); + + return parser.parseSignedClaims(token).getPayload(); + } + + private PrivateKey getAccessTokenPrivateKey() { + if (accessTokenPrivateKey == null) { + try { + String privateKeyPEM = + jwtProperties + .accessTokenPrivateKey() + .replace("-----BEGIN PRIVATE KEY-----", "") + .replace("-----END PRIVATE KEY-----", "") + .replaceAll("\\s", ""); + + byte[] decoded = Base64.getDecoder().decode(privateKeyPEM); + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decoded); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + accessTokenPrivateKey = keyFactory.generatePrivate(keySpec); + } catch (Exception e) { + throw new RuntimeException("Failed to load private key", e); + } + } + return accessTokenPrivateKey; + } + + private PublicKey getAccessTokenPublicKey() { + if (accessTokenPublicKey == null) { + try { + String publicKeyPEM = + jwtProperties + .accessTokenPublicKey() + .replace("-----BEGIN PUBLIC KEY-----", "") + .replace("-----END PUBLIC KEY-----", "") + .replaceAll("\\s", ""); + + byte[] decoded = Base64.getDecoder().decode(publicKeyPEM); + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decoded); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + accessTokenPublicKey = keyFactory.generatePublic(keySpec); + } catch (Exception e) { + throw new RuntimeException("Failed to load public key", e); + } + } + return accessTokenPublicKey; } - private Key getRefreshTokenKey() { + private SecretKey getRefreshTokenKey() { return Keys.hmacShaKeyFor(jwtProperties.refreshTokenSecret().getBytes()); } private String buildAccessToken(Long memberId, Role authority, Date issuedAt, Date expiredAt) { return Jwts.builder() - .setIssuer(jwtProperties.issuer()) - .setSubject(memberId.toString()) + .issuer(jwtProperties.issuer()) + .subject(memberId.toString()) .claim(TOKEN_ROLE_NAME, authority.name()) - .setIssuedAt(issuedAt) - .setExpiration(expiredAt) - .signWith(getAccessTokenKey()) + .issuedAt(issuedAt) + .expiration(expiredAt) + .signWith(getAccessTokenPrivateKey(), Jwts.SIG.RS256) .compact(); } private String buildRefreshToken(Long memberId, Date issuedAt, Date expiredAt) { return Jwts.builder() - .setIssuer(jwtProperties.issuer()) - .setSubject(memberId.toString()) - .setIssuedAt(issuedAt) - .setExpiration(expiredAt) - .signWith(getRefreshTokenKey()) + .issuer(jwtProperties.issuer()) + .subject(memberId.toString()) + .issuedAt(issuedAt) + .expiration(expiredAt) + .signWith(getRefreshTokenKey(), Jwts.SIG.HS512) .compact(); } } diff --git a/src/main/resources/application-base-url.yaml b/src/main/resources/application-base-url.yaml new file mode 100644 index 0000000..425826d --- /dev/null +++ b/src/main/resources/application-base-url.yaml @@ -0,0 +1,15 @@ +spring: + config: + activate: + on-profile: "base-url" +service: + member: + base-url: ${MEMBER-SERVICE-URL:member-service}:${MEMBER_PORT:8081} + product: + base-url: ${PRODUCT-SERVICE-URL:product-service}:${PRODUCT_PORT:8082} + order: + base-url: ${ORDER-SERVICE-URL:order-service}:${ORDER_PORT:8083} + payment: + base-url: ${PAYMENT-SERVICE-URL:payment-service}:${PAYMENT_PORT:8084} + ai: + base-url: ${AI-SERVICE-URL:ai-service}:${AI_PORT:8085} \ No newline at end of file diff --git a/src/main/resources/application-security.yaml b/src/main/resources/application-security.yaml index 80aafb3..4cf263b 100644 --- a/src/main/resources/application-security.yaml +++ b/src/main/resources/application-security.yaml @@ -3,7 +3,8 @@ spring: activate: on-profile: "security" jwt: - access-token-secret: ${JWT_ACCESS_TOKEN_SECRET} + access-token-private-key: ${JWT_ACCESS_TOKEN_PRIVATE_KEY} + access-token-public-key: ${JWT_ACCESS_TOKEN_PUBLIC_KEY} refresh-token-secret: ${JWT_REFRESH_TOKEN_SECRET} access-token-expiration-time: ${JWT_ACCESS_TOKEN_EXPIRATION_TIME:7200} refresh-token-expiration-time: ${JWT_REFRESH_TOKEN_EXPIRATION_TIME:172800} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 2dcfa50..b36d7d7 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -3,9 +3,9 @@ spring: name: member-service profiles: group: - "local": "local, default-datasource, default-db-management, default-redis, security, openfeign, actuator" - "docker": "docker, default-datasource, default-db-management, default-redis, security, openfeign, actuator" - "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, openfeign, actuator" + "local": "local, default-datasource, default-db-management, default-redis, security, openfeign, actuator, base-url" + "docker": "docker, default-datasource, default-db-management, default-redis, security, openfeign, actuator, base-url" + "prod": "prod, prod-datasource, prod-db-management, prod-data-redis, security, openfeign, actuator, base-url" active: ${PROFILE_ACTIVE:local} # config: From e6a3b512c7f03701ee1a40f6d52d0761bafd560c Mon Sep 17 00:00:00 2001 From: isak-kang Date: Thu, 4 Dec 2025 15:41:14 +0900 Subject: [PATCH 10/13] =?UTF-8?q?logback=20=EC=88=98=EC=A0=95,=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80,=20otelagent=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 10 +- build.gradle | 3 + src/main/resources/logback-spring.xml | 133 +++++++------------------- 3 files changed, 49 insertions(+), 97 deletions(-) diff --git a/Dockerfile b/Dockerfile index 74b9df2..2c89830 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,4 +21,12 @@ COPY --from=build /app/build/libs/*SNAPSHOT.jar app.jar ENV TZ=Asia/Seoul -ENTRYPOINT ["java", "-jar", "app.jar"] +RUN curl -L \ + https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar \ + -o /app/opentelemetry-javaagent.jar + +COPY --from=build /app/build/libs/*.jar app.jar + +ENV TZ=Asia/Seoul + +ENTRYPOINT ["java","-javaagent:/app/opentelemetry-javaagent.jar","-Dotel.service.name=product-service","-Dotel.propagators=tracecontext,baggage,b3,b3multi","-Dotel.traces.exporter=otlp","-Dotel.logs.exporter=none","-Dotel.metrics.exporter=none","-Dotel.exporter.otlp.endpoint=http://otel-collector.istio-system.svc.cluster.local:4317","-Dotel.exporter.otlp.protocol=grpc","-jar", "/app/app.jar"] diff --git a/build.gradle b/build.gradle index 75dfe99..c9caa5b 100644 --- a/build.gradle +++ b/build.gradle @@ -112,6 +112,9 @@ dependencies { // // Config-Server // implementation 'org.springframework.cloud:spring-cloud-starter-config' + // logback + implementation 'net.logstash.logback:logstash-logback-encoder:8.0' + // Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-core' diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 0035ef6..d3198ea 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,107 +1,48 @@ - - - - - //IDE 출력 설정 - - - - //로그파일 생성 설정 - - ${LOG_DIR}/come2us.log - - - ${LOG_DIR}/come2us.app.%d{yyyy-MM-dd}.log - 30 - - - ${LOG_PATTERN} - - - //에러 로그 필터링 설정 - - - ERROR - ACCEPT DENY + + - ${LOG_DIR}/error.log - - - ${LOG_DIR}/error.%d{yyyy-MM-dd}.log - 60 - - ${LOG_PATTERN} + + + + + + + + + + + + + + + + + + { + "timestamp": "%date{ISO8601}", + "level": "%level", + "thread": "%thread", + "logger": "%logger", + "message": "%message", + "traceId": "%X{trace_id}", + "spanId": "%X{span_id}", + "service": "${SERVICE_NAME}", + "env": "${ENV}", + } + + + + + + - //logger 레벨 설정 - // application: DEBUG - - - - - - - // JPA Hibernate SQL 쿼리: DEBUG - - - - - // JPA Hibernate SQL 실제 타입 바인딩: TRACE - - - - - // 기타 외부 의존성: INFO - - - + - //프로필 별 설정 - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 5249ac1405220fa99dd4ac937c82d121b17d9cba Mon Sep 17 00:00:00 2001 From: isak-kang Date: Thu, 4 Dec 2025 15:44:33 +0900 Subject: [PATCH 11/13] =?UTF-8?q?COPY=20=ED=95=98=EB=82=98=EB=A7=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2c89830..9385cf7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,6 @@ FROM eclipse-temurin:21-jre-jammy WORKDIR /app -COPY --from=build /app/build/libs/*SNAPSHOT.jar app.jar - ENV TZ=Asia/Seoul RUN curl -L \ From b06809c41be6fa8d9f7ce6738bb9482c128133f9 Mon Sep 17 00:00:00 2001 From: isak-kang Date: Thu, 4 Dec 2025 15:48:13 +0900 Subject: [PATCH 12/13] =?UTF-8?q?ENV=20=EC=A4=91=EB=B3=B5=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9385cf7..64d86b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,6 @@ FROM eclipse-temurin:21-jre-jammy WORKDIR /app -ENV TZ=Asia/Seoul - RUN curl -L \ https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar \ -o /app/opentelemetry-javaagent.jar From abf6592c33ac3bb44f5bb8613f49074bbe33d126 Mon Sep 17 00:00:00 2001 From: isak-kang Date: Thu, 4 Dec 2025 15:54:54 +0900 Subject: [PATCH 13/13] =?UTF-8?q?refactor=20:=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=B0=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/logback-spring.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index d3198ea..173829e 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -30,7 +30,7 @@ "traceId": "%X{trace_id}", "spanId": "%X{span_id}", "service": "${SERVICE_NAME}", - "env": "${ENV}", + "env": "${ENV}" }