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 @@ -18,4 +18,4 @@ mybatis:
map-underscore-to-camel-case: true

logging:
config: classpath:log4j2-production.yml
config: classpath:log4j2-test-e2e.yml
23 changes: 23 additions & 0 deletions apps/user-service/src/main/resources/log4j2-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,29 @@ Configuration:
- name: "runId"
value: "${ctx:runId}"

# ExecutionDB:
# name: ExecutionDB
# class: org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender
# tableName: execution_log
# columnMappings:
# - name: log_level
# pattern: "%level"
# - name: log_message
# pattern: "%message"
# - name: trace_id
# pattern: "%X{traceId}"
# - name: execution_type
# pattern: "%X{executionType}"
# - name: source_id
# pattern: "%X{sourceId}"
# - name: run_id
# pattern: "%X{runId}"
# - name: executed_at
# pattern: "%d{yyyy-MM-dd HH:mm:ss}"
# connectionSource:
# class: org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource
# dataSource: "#dataSource

# ๊ฐœ๋ฐœ์šฉ ์ผ๋ฐ˜ ๋กœ๊ทธ ํŒŒ์ผ
File:
- name: file-dev-appender
Expand Down
168 changes: 168 additions & 0 deletions apps/user-service/src/main/resources/log4j2-test-e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
Configuration:
status: DEBUG
name: e2e

properties:
property:
- name: "app-name"
value: "user-service"
- name: "log-path"
value: "./logs"
- name: "charset-UTF-8"
value: "UTF-8"
# DEBUG ํ™˜๊ฒฝ์šฉ ์ฝ˜์†” ํŒจํ„ด - ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ
- name: "console-layout-pattern"
value: "%highlight{[%-5level]} [%X{traceId}] [%X{spanId}] %d{HH:mm:ss} [%t] %n %logger{20} - %msg%n%n "
# ํŒŒ์ผ์šฉ ํŒจํ„ด
- name: "file-layout-pattern"
value: "[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
# ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์šฉ ๋กœ๊ทธ ํŒŒ์ผ๋“ค
- name: "dev-log"
value: ${log-path}/develop/app.log
- name: "error-log"
value: ${log-path}/develop/error.log

Appenders:
# ์ฝ˜์†” ์ถœ๋ ฅ - ๊ฐœ๋ฐœ ์‹œ ์ฃผ์š” ์ถœ๋ ฅ
Console:
name: console-appender
target: SYSTEM_OUT
PatternLayout:
pattern: ${console-layout-pattern}
disableAnsi: false

Loki:
name: loki-appender
host: localhost
port: ${sys:loki.port}
JsonLayout:
compact: true
eventEol: true
includeStacktrace: true
KeyValuePair:
- key: "app"
value: "${app-name}"
- key: "env"
value: "test-e2e"
Label:
- name: "app"
value: "${app-name}"
- name: "env"
value: "test-e2e"
- name: "traceId"
value: "${ctx:traceId}"
- name: "spanId"
value: "${ctx:spanId}"
- name: "executionType"
value: "${ctx:executionType:-application}"
- name: "sourceId"
value: "${ctx:sourceId}"
- name: "runId"
value: "${ctx:runId}"

# ExecutionDB:
# name: ExecutionDB
# class: org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender
# tableName: execution_log
# columnMappings:
# - name: log_level
# pattern: "%level"
# - name: log_message
# pattern: "%message"
# - name: trace_id
# pattern: "%X{traceId}"
# - name: execution_type
# pattern: "%X{executionType}"
# - name: source_id
# pattern: "%X{sourceId}"
# - name: run_id
# pattern: "%X{runId}"
# - name: executed_at
# pattern: "%d{yyyy-MM-dd HH:mm:ss}"
# connectionSource:
# class: org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource
# dataSource: "#dataSource

# ๊ฐœ๋ฐœ์šฉ ์ผ๋ฐ˜ ๋กœ๊ทธ ํŒŒ์ผ
File:
- name: file-dev-appender
fileName: ${dev-log}
PatternLayout:
pattern: ${file-layout-pattern}
- name: file-error-appender
fileName: ${error-log}
PatternLayout:
pattern: ${file-layout-pattern}
ThresholdFilter:
level: ERROR

Loggers:
# Root ๋กœ๊ฑฐ - ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ INFO ๋ ˆ๋ฒจ
Root:
level: INFO
AppenderRef:
- ref: console-appender

Logger:
# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ - ๊ฐœ๋ฐœ ์‹œ ๋ชจ๋“  ๋ ˆ๋ฒจ + Loki ์ „์†ก
- name: site.icebang
additivity: false
level: DEBUG
AppenderRef:
- ref: console-appender
- ref: loki-appender
- ref: file-dev-appender
- ref: file-error-appender

# Spring Framework - ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ
- name: org.springframework
additivity: false
level: INFO
AppenderRef:
- ref: console-appender
- ref: file-dev-appender

# Spring Security - ์ธ์ฆ ๋””๋ฒ„๊น…์šฉ
- name: org.springframework.security
level: DEBUG
additivity: false
AppenderRef:
- ref: console-appender
- ref: file-dev-appender
- ref: loki-appender

# ์›น ์š”์ฒญ ๋กœ๊ทธ - API ๊ฐœ๋ฐœ ์‹œ ์œ ์šฉ
- name: org.springframework.web
level: DEBUG
additivity: false
AppenderRef:
- ref: console-appender
- ref: file-dev-appender
- ref: loki-appender

# ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ - DB ์ž‘์—… ๋””๋ฒ„๊น…
- name: org.springframework.transaction
level: DEBUG
additivity: false
AppenderRef:
- ref: console-appender
- ref: file-dev-appender
- ref: loki-appender

# HikariCP ๋กœ๊ทธ ๋น„ํ™œ์„ฑํ™”
- name: com.zaxxer.hikari
level: OFF

# SQL ๋กœ๊ทธ - ๊ฐœ๋ฐœ ์‹œ ์ฟผ๋ฆฌ ํ™•์ธ์šฉ (ํ•„์š”์‹œ ํ™œ์„ฑํ™”)
- name: org.hibernate.SQL
level: DEBUG
additivity: false
AppenderRef:
- ref: console-appender

# ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ”์ธ๋”ฉ ๋กœ๊ทธ (ํ•„์š”์‹œ ํ™œ์„ฑํ™”)
- name: org.hibernate.type.descriptor.sql.BasicBinder
level: TRACE
additivity: false
AppenderRef:
- ref: console-appender
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
import org.testcontainers.utility.DockerImageName;

@TestConfiguration(proxyBeanMethods = false)
public class E2eTestConfiguration {
Expand All @@ -15,6 +19,11 @@ public ObjectMapper objectMapper() {
return new ObjectMapper();
}

@Bean
public Network testNetwork() {
return Network.newNetwork();
}

@Bean
@ServiceConnection
MariaDBContainer<?> mariadbContainer() {
Expand All @@ -24,8 +33,20 @@ MariaDBContainer<?> mariadbContainer() {
.withPassword("qwer1234");
}

@Bean
GenericContainer<?> lokiContainer(Network network) {
return new GenericContainer<>(DockerImageName.parse("grafana/loki:2.9.0"))
.withNetwork(network)
.withNetworkAliases("loki")
.withExposedPorts(3100)
.withCommand("-config.file=/etc/loki/local-config.yaml")
.waitingFor(Wait.forHttp("/ready"))
.withStartupTimeout(java.time.Duration.ofMinutes(2));
}

@DynamicPropertySource
static void configureProperties(DynamicPropertyRegistry registry, MariaDBContainer<?> mariadb) {
static void configureProperties(
DynamicPropertyRegistry registry, MariaDBContainer<?> mariadb, GenericContainer<?> loki) {
// MariaDB ์—ฐ๊ฒฐ ์„ค์ •
registry.add("spring.datasource.url", mariadb::getJdbcUrl);
registry.add("spring.datasource.username", mariadb::getUsername);
Expand All @@ -39,5 +60,7 @@ static void configureProperties(DynamicPropertyRegistry registry, MariaDBContain
registry.add("spring.hikari.maximum-pool-size", () -> "10");
registry.add("spring.hikari.minimum-idle", () -> "5");
registry.add("spring.hikari.pool-name", () -> "HikariCP-E2E");

System.setProperty("loki.port", String.valueOf(loki.getMappedPort(3100)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.context.WebApplicationContext;
import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
Expand All @@ -15,6 +16,7 @@
@Import(E2eTestConfiguration.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@E2eTest
@Sql(value = "classpath:sql/00-truncate.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_CLASS)
public abstract class E2eTestSupport {
@Autowired protected TestRestTemplate restTemplate;

Expand Down
Loading