티스토리 뷰

spring boot logback설정

https://dzone.com/articles/configuring-logback-with-spring-boot 참고함

 

로그 레벨

TRACE -> DEBUG -> INFO -> WARN -> ERROR

 

ex) INFO로 해놓는 경우 DEBUG, TRACE레벨의 로그는 안보입니다.

DEBUG로 해놓는 경우는 TRACE레벨의 로그는 안보입니다.

 

 

1.logback-spring.xml을 사용한다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>testFile.log</file>
        <append>true</append>
        <!-- set immediateFlush to false for much higher logging throughput -->
        <immediateFlush>true</immediateFlush>
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <springProfile name="dev,qa,prod">
    </springProfile>

    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

 

2.profile

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <springProfile name="local">
        <appender name="STDOUT" class="com.hello.world.log.LocalLogAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
            </encoder>
        </appender>
    </springProfile>

    <springProfile name="dev,qa,prod">
        <appender name="STDOUT" class="com.hello.world.log.LogAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
            </encoder>
        </appender>
    </springProfile>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

 

<springProfile>로 appender를 LogAppender를 쓰게 할 것인지 LocalLogAppender를 쓰게 할 것인지 정할 수 있다.

 

로그 끄는법

클라우드를 쓰면 로그도 다 돈이기 때문에 중요하지 않은 곳에는 로그를 꺼놓아야 할 필요가 있을때가 있다.

log = .
log4j.rootLogger = OFF
log4j.appender.LAMBDA=com.amazonaws.services.lambda.runtime.log4j.LambdaAppender
log4j.appender.LAMBDA.layout=org.apache.log4j.PatternLayout
log4j.appender.LAMBDA.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} <%X{AWSRequestId}> %-5p %c:%L - %m%n

log4j.rootLogger = OFF로 해놓으면 꺼진다.

이건 log4j설정인데 다른 로그 설정에도 끄는게 있을 것이다.

로그레벨(log level)을 OFF로 변경하는 것이다. 대체로는 INFO, DEBUG등을 쓴다.

 

groovy로그 설정

import java.nio.charset.Charset
import ch.qos.logback.classic.AsyncAppender

def aimsRootPath = "./logs/"
def filePath = "/Users/kyeongrok/core.log"

appender("CONSOLE", ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "▶ %-5level %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n"
        charset = Charset.forName("UTF-8")
    }
}

appender("ROLLING_FILE", RollingFileAppender) {
    file = "./logs/daily.log"

    rollingPolicy(SizeAndTimeBasedRollingPolicy) {
        fileNamePattern = "${aimsRootPath}/core/core.%d.%i.log"
        maxFileSize = "1MB"
        maxHistory = 30
        totalSizeCap = "5MB"
    }

    encoder(PatternLayoutEncoder) {
        pattern = "%d %-5p [%t] %logger{0} - %m%n"
        charset = Charset.forName("UTF-8")
    }
}

appender("ASYNC_CONSOLE", AsyncAppender) {
    appenderRef("CONSOLE")
}

appender("ASYNC_ROLLING_FILE", AsyncAppender) {
    queueSize = 512
    discardingThreshold = 0		//TODO For Debugging
    appenderRef("ROLLING_FILE")
}


root(INFO, ['CONSOLE', 'ROLLING_FILE', 'ASYNC_CONSOLE', 'ASYNC_ROLLING_FILE'])

 

end.

 

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함