1- <configuration >
2- <springProfile name =" default" >
3- <appender name =" CONSOLE" class =" ch.qos.logback.core.ConsoleAppender" >
4- <encoder >
5- <pattern >%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern >
6- <charset >UTF-8</charset >
7- </encoder >
8- </appender >
9-
10- <appender name =" ASYNC_FILE" class =" ch.qos.logback.classic.AsyncAppender" >
11- <appender-ref ref =" FILE" />
12- <queueSize >5000</queueSize >
13- <discardingThreshold >0</discardingThreshold >
14- </appender >
15-
16- <appender name =" FILE" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
17- <file >${LOG_DIR:-logs}/application.log</file >
18- <rollingPolicy class =" ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
19- <fileNamePattern >${LOG_DIR:-logs}/application.%d{yyyy-MM-dd}.log</fileNamePattern >
20- <maxHistory >30</maxHistory >
21- </rollingPolicy >
22- <encoder >
23- <pattern >%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern >
24- <charset >UTF-8</charset >
25- </encoder >
26- </appender >
27-
28- <logger name =" com.somemore" level =" DEBUG" additivity =" false" >
29- <appender-ref ref =" CONSOLE" />
30- <appender-ref ref =" ASYNC_FILE" />
31- </logger >
32-
33- <root level =" INFO" >
34- <appender-ref ref =" CONSOLE" />
35- <appender-ref ref =" ASYNC_FILE" />
36- </root >
37- </springProfile >
38- </configuration >
1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <configuration scan =" true" scanPeriod =" 30 seconds" >
3+
4+ <property name =" LOG_PATH" value =" ./logs" />
5+ <property name =" LOG_FILE_NAME" value =" application" />
6+
7+ <!-- 공통 로그 패턴 -->
8+ <property name =" LOG_PATTERN" value =" %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
9+
10+ <!-- 콘솔 출력 Appender -->
11+ <appender name =" CONSOLE" class =" ch.qos.logback.core.ConsoleAppender" >
12+ <encoder >
13+ <pattern >${LOG_PATTERN}</pattern >
14+ </encoder >
15+ </appender >
16+
17+ <!-- 파일 출력 Appender -->
18+ <appender name =" FILE" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
19+ <file >${LOG_PATH}/${LOG_FILE_NAME}.log</file >
20+ <rollingPolicy class =" ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
21+ <fileNamePattern >${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern >
22+ <maxHistory >30</maxHistory >
23+ <totalSizeCap >3GB</totalSizeCap >
24+ </rollingPolicy >
25+ <encoder >
26+ <pattern >${LOG_PATTERN}</pattern >
27+ </encoder >
28+ </appender >
29+
30+ <!-- Loki Appender -->
31+ <appender name =" LOKI" class =" com.github.loki4j.logback.Loki4jAppender" >
32+
33+ <http >
34+ <url >http://localhost:3100/loki/api/v1/push</url >
35+ <connectionTimeoutMs >30000</connectionTimeoutMs >
36+ <requestTimeoutMs >15000</requestTimeoutMs >
37+ <maxRetries >3</maxRetries >
38+ <backoffMs >1000</backoffMs >
39+ </http >
40+
41+ <batchSize >100</batchSize >
42+ <batchTimeoutMs >10000</batchTimeoutMs >
43+ <bufferSize >1048576</bufferSize >
44+
45+ <format >
46+ <label >
47+ <pattern >app=my-app,host=${HOSTNAME},environment=${ENV:-local},service=${SERVICE_NAME:-somemore}</pattern >
48+ </label >
49+ <message class =" com.github.loki4j.logback.JsonLayout" >
50+ <includeTimestamp >true</includeTimestamp >
51+ <includeMDC >true</includeMDC >
52+ <includeThreadName >true</includeThreadName >
53+ <includeLoggerName >true</includeLoggerName >
54+ <jsonFactory >JACKSON</jsonFactory >
55+ <timestampFieldName >@timestamp</timestampFieldName >
56+ <prettyPrint >false</prettyPrint >
57+ <appendLineSeparator >true</appendLineSeparator >
58+ <messageTemplate >${LOG_PATTERN}</messageTemplate >
59+ <timestampFormat >yyyy-MM-dd HH:mm:ss.SSS</timestampFormat >
60+ </message >
61+ <timestampPattern >yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampPattern >
62+ </format >
63+
64+ <timeZone >Asia/Seoul</timeZone >
65+ </appender >
66+
67+ <logger name =" com.somemore.application" level =" DEBUG" additivity =" false" >
68+ <appender-ref ref =" CONSOLE" />
69+ <appender-ref ref =" FILE" />
70+ <appender-ref ref =" LOKI" />
71+ </logger >
72+
73+ <logger name =" org.springframework" level =" INFO" />
74+ <logger name =" org.hibernate" level =" INFO" />
75+
76+ <root level =" INFO" >
77+ <appender-ref ref =" CONSOLE" />
78+ <appender-ref ref =" FILE" />
79+ <appender-ref ref =" LOKI" />
80+ </root >
81+ </configuration >
0 commit comments