logback VS log4j2 - g-market/b-shop-backend GitHub Wiki
logback
- spring-boot-starter-web์ ๊ธฐ๋ณธ ๋ก๊น ํ๋ ์์ํฌ
log4j2
- logback, log4j์ ๋จ์ ์ ๊ฐ์ ํ ๋ก๊น ํ๋ ์์ํฌ
- logback๋ณด๋ค ํ์ํ ์ฑ๋ฅ ๋ฐ ๋ค์ํ appender ์ ๊ณต
logback์ผ๋ก๋ ์ถฉ๋ถํ ํ์ผ ๋ก๊น ์ ํ ์ ์๊ธฐ์ logback์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
configurations {
// logback ์์กด์ฑ ์ ๊ฑฐ
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
dependencies {
// log4j2
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml'
}
spring-boot-starter-web์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ logback ๋ก๊น ํ๋ ์์ํฌ ์์กด์ฑ์ ์ ๊ฑฐํ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
# application.yml
logging:
config: classpath:log4j2.yml
๊ธฐ๋ณธ default ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ง์ฝ ๋ก์ปฌ ํ๊ฒฝ๊ณผ ๋ฐฐํฌํ๊ฒฝ์ด ๋๋์ด์ ธ์๋ค๋ฉด logging์ config๋ฅผ ๊ทธ์ ๋ง๊ฒ ์์ ํด์ค์ผ ํ๋ค.
# application-local.yml
logging:
config: classpath:log4j2-local.yml
# application-prod.yml
logging:
config: classpath:log4j2-prod.yml
๋ก๊น ์ ๋ต์ ๋ฐ๋ผ์ log4j2 yml ํ์ผ์ ๋ด์ฉ์ด ๋ฌ๋ผ์ง๋ค.
Console ๋ฐฉ์, file(๋จ์ผ ํ์ผ, ์ฌ์คํ ์ ์ฌ๋ผ์ง), rollingfile(์์นด์ด๋ธํ ํ์ฌ ๋ณด๊ด)
์ฐ๋ฆฌ๋ ๋ก์ปฌ์์๋ file, rollingfile๋ก ๋จ๊ธธ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ฌ Appender๋ฅผ Console๋ก ์ค์ ํ๋ค.
๋ฐฐํฌ ํ๊ฒฝ์์๋ ๋ก๊ทธ ํ์ผ์ ๋ณด๊ดํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋จํด RollingFile_Appender๋ก ์ค์ ํ๋ค.
๋ก์ปฌ ํ๊ฒฝ์์๋ DEBUG, ๋ฐฐํฌ ํ๊ฒฝ์์๋ INFO๋ก ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ค.
๊ทธ๋ฌ๋, ๋ก์ปฌ๊ณผ ๊ฐ๋ฐ์์ Spring Application์ ๊ตฌ๋ ์ ์คํ๋ง ๊ด๋ จ ๋ถํ์ํ ์ ๋ณด๋ค์ด ๋๋ฌด ๋ง์ด ์ถ๋ ฅ๋ผ Root log level์ INFO๋ก, Controller ํจํค์ง ์ดํ์์๋ DEBUG๋ก ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋ค.
# log4j2-local.yaml
Configutation:
name: Default
status: info
Properties:
Property:
name: log-path
value: "logs"
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red,
ERROR=red, INFO=green, DEBUG=blue, TRACE=bg_yellow} [%C] %style{[%t]}{yellow}- %m%n"
Loggers:
Root:
level: info
AppenderRef:
- ref: Console_Appender
Logger:
- name: com.gabia.bshop
additivity: false
level: debug
AppenderRef:
- ref: Console_Appender
Configutation:
name: Default
status: info
Properties:
Property:
name: log-path
value: "logs"
Appenders:
RollingFile:
- name: RollingFile_Appender
fileName: ${log-path}/rollingfile.log
filePattern: "${log-path}/archive/rollingfile.log_%d{yyyy-MM-dd}-%i.gz"
PatternLayout:
pattern: "%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red,
ERROR=red, INFO=green, DEBUG=blue, TRACE=bg_yellow} [%C] %style{[%t]}{yellow}- %m%n"
Policies:
TimeBasedTriggeringPolicy:
Interval: 1
modulate: true
SizeBasedTriggeringPolicy:
size: "10 MB"
DefaultRollOverStrategy:
max: 10
Delete:
basePath: "${log-path}/archive"
maxDepth: "1"
IfLastModified:
age: "P14D"
IfAccumulatedFileCount:
exceeds: 140
Loggers:
Root:
level: info
AppenderRef:
- ref: RollingFile_Appender
Logger:
- name: com.gabia.bshop
additivity: false
level: info
AppenderRef:
- ref: RollingFile_Appender
Configuration
Configutation:
name: Default
status: info
๋ก๊ทธ ์ค์ ์ ์ต์์ ์์์ด๋ค. ํด๋น ํ์ผ์ ๋ฃจํธ ๋ก๊น ์ ๋ต์ name๊ณผ status๋ฅผ ์ ์ด์ฃผ๋ฉด ๋๋ค.
status๋ log level์ ์ ์ด์ฃผ๋ฉด ๋๋ค. error, warn, info, debug, trace ์ค์์ ์ ํํ๋ฉด ๋๋ค.
๋ก๊ทธ ๋ ๋ฒจ์ ์๋ ์์๋ฅผ ๋ฐ๋ฅธ๋ค.
๋ณดํต์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ debug ๋๋ info, ๋ฐฐํฌ ํ๊ฒฝ์์๋ info๋ฅผ ๋ง์ด ํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๋ฌด์กฐ๊ฑด ๋ง์ ์ ๋ณด๋ฅผ ๋์ด๋ค๊ณ ์ข์ ๊ฒ์ด ์๋๋ค. ๊ทธ๋งํผ ์ฉ๋์ ๋ง์ด ์ฐจ์งํ๊ณ ๋ถํ์ํ ๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋ผ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
Properties
Properties:
Property:
name: log-path
value: "logs"
Appenders
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red,
ERROR=red, INFO=green, DEBUG=blue, TRACE=bg_yellow} [%C] %style{[%t]}{yellow}- %m%n"
๋ก๊น ์ ๋ต์ ๋ช ์ํด์ฃผ๋ ๋ถ๋ถ์ด๋ค.
- target: ํ์ค ์ ์ถ๋ ฅ์์ ๋ช ์
- pattern: ๋ก๊ทธ ์คํ์ผ ์ง์ ํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์์ ( ERROR๋ ๋นจ๊ฐ์, INFO๋ ์ด๋ก์ ๋ฑ์ผ๋ก)
RollingFile_Appender๋ก ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ์ฅํ ๊ธฐ๊ฐ, ์ฉ๋ ๊ด๋ฆฌ ๋ฑ์ ์ค์ ํด์ฃผ์ด์ผ ํ๋ฏ๋ก ๊ฝค ๋ณต์กํด์ง๋ค.
Appenders:
RollingFile:
- name: RollingFile_Appender
fileName: ${log-path}/rollingfile.log
filePattern: "${log-path}/archive/rollingfile.log_%d{yyyy-MM-dd}-%i.gz"
PatternLayout:
pattern: "%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red,
ERROR=red, INFO=green, DEBUG=blue, TRACE=bg_yellow} [%C] %style{[%t]}{yellow}- %m%n"
Policies:
TimeBasedTriggeringPolicy:
Interval: 1
modulate: true
SizeBasedTriggeringPolicy:
size: "10 MB"
DefaultRollOverStrategy:
max: 10
Delete:
basePath: "${log-path}/archive"
maxDepth: "1"
IfLastModified:
age: "P14D"
IfAccumulatedFileCount:
exceeds: 140
-
File
- name : RollingFileAppender ์ด๋ฆ
- fileName : ์ ์ฅํ ํ์ผ ๊ฒฝ๋ก, ์ด๋ฆ์ ๋ ์ง ํ์์ ์ง์ ํ์ฌ ์ ์ฅ ๊ฐ๋ฅ (Properties์ ์ง์ ํ logs ๋๋ ํ ๋ฆฌ์ archive ๋๋ ํ ๋ฆฌ ์๋์ rollingfile.log_%d{yyyy-MM-dd}.gz ํ์ผ๋ช ์ผ๋ก ๋ก๊ทธ ์ ์ฅ)
- PatternLayout : ๋ก๊ทธ ์ถ๋ ฅ ์์ ์ง์
-
Policy : File RollingUp์ ๊ธฐ์ค์ ์ง์
- OnStartupTriggeringPolicy : jvm start์ trigger
- TimeBasedTriggeringPolicy + Interval : time์ ๋ฐ๋ฅธ trigger(ํ์ผ ์ด๋ฆ ํจํด์ ์ต์๋จ์ ๋ ์ง๋ก ๊ณ์ฐ, ์ ์์๋ ํ๋ฃจ์ ํ ๋ฒ RollingUp). ์ ์์๋ ํ๋ฃจ ๋จ์๋ก ์์ถ ๋ณด๊ดํ๋๋ก ํจ.
- SizeBasedTriggeringPolicy + size : file size์ ๋ฐ๋ฅธ trigger.
- CronTriggeringPolicy : Cron Expression(์๊ฐ์ ๊ดํ ํํ)์ ๋ฐ๋ฅธ trigger
-
DefaultRollOverStrategy : Rolling File์ Over(์ญ์ )ํ๋ ๊ธฐ์ค์ ์ง์
- max: ๋์๊ฐ๋์ ์ต๋ 10๊ฐ๊น์ง RollingFiles๊ฐ ์์ฑ๋ ์ ์๋๋ก ์ง์
- basePath: ์์นด์ด๋ธํํ ๋ก๊ทธ ํ์ผ ์์น ์ง์ . (Properties์ ์ง์ ํ logs ๋๋ ํ ๋ฆฌ์ archive ๋๋ ํ ๋ฆฌ ์๋์ rollingfile.log_%d{yyyy-MM-dd}.gz ํ์ผ๋ช ์ผ๋ก ๋ก๊ทธ ์ ์ฅ)
- IfLastModified - age: "P14D": ์์ ๋์ง 14์ผ์ด ์ง๋ ํ์ผ์ ์ญ์
- IfAccumulatedFileCount : RollingUp๋ ์์ถํ์ผ์ ์ ์ฅํ๋ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ ์ ์๋ ํ์ผ ๊ฐ์. ํ์ผ ๊ฐ์๋ฅผ ๋์ผ๋ฉด ์ค๋๋ ํ์ผ๋ถํฐ ์ญ์ (์ด 140๊ฐ ์ด๊ณผ์ ์ค๋๋ ํ์ผ๋ถํฐ ์ญ์ )
์ ์ฌํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์.
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender
Loggers
Loggers:
Root:
level: info
AppenderRef:
- ref: Console_Appender
Logger:
- name: com.gabia.bshop
additivity: false
level: debug
AppenderRef:
- ref: Console_Appender
๋ก๊น ์ ์ง์ ํ๋ ์์, ๋ก๊ฑฐ๋ ํจํค์ง ๋ณ๋๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค. Root ํจํค์ง์ ๋ก๊ฑฐ๋ ํ์์ ์ผ๋ก ์ธํ ํด์ฃผ์ด์ผ ํ๋ฉฐ, ์ถ๊ฐ์ ์ธ ๋ก๊ฑฐ๋ฅผ ์ค์ ํ๋ ค๋ฉด Logger๋ก ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
- level : ํด๋น ํจํค์ง์ ์ฐ์ ์ตํ ๋ก๊ทธ ๋ ๋ฒจ์ ์ง์
- additivity : false๋ก ์ง์ ์ ๋ก๊ทธ๊ฐ ์ค๋ณต์ผ๋ก ์ฐํ๋ ๊ฒ์ ๋ฐฉ์ง (๊ธฐ๋ณธ๊ฐ: true)
- AppenderRef : ref์์ฑ์ผ๋ก ์ ์ฉํ Appender๋ฅผ ์ง์