> Java > java지도 시간 > Springboot가 Logback을 사용하여 로그 구성을 구현하는 방법

Springboot가 Logback을 사용하여 로그 구성을 구현하는 방법

WBOY
풀어 주다: 2023-05-16 09:07:05
앞으로
1522명이 탐색했습니다.

개요

기본적으로 SpringBoot는 로그를 콘솔에 출력하고 로그 파일에 쓰지 않는 시스템 로그 구현을 위한 프레임워크로 내부적으로 로그백을 사용합니다. application.properties 또는 application.yml에 구성하면 간단한 시나리오, 저장 경로, 로그 형식 등만 구성할 수 있습니다. 복잡한 시나리오(정보와 오류 로그 구분, 매일 로그 파일 생성 등)는 만족할 수 없으므로 구성 파일 logback-spring.xml 또는 logback.xml만 사용자 정의할 수 있습니다.

로그백 구성에 대한 자세한 설명

먼저 로그백에 대해 알아보겠습니다.

Logback은 주로 세 가지 모듈로 나뉩니다.

  • logback-core: 다른 두 모듈의 기본 모듈입니다.

  • logback-classic: 코어 모듈의 확장으로 개선된 버전에 해당합니다. log4j의 클래식 모듈은 Slf4j API를 구현하므로 다른 로그 프레임워크와 쉽게 직접 전환할 수 있습니다.

  • logback-access: Servlet 컨테이너와 통합하여 http 액세스 로그 기능을 제공합니다. KLogBack 구성

1.Application .properties

# 로그 인쇄 정보 구성

Logging.config = ClassPath: LogBack-SPRING.XML


2 LogBack.xml

<?mybatis version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>ERROR</level>
         </filter>-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件会滚动 -->
        <!-- 文件路径 -->
        <file>./logs/gf_scanning.log</file><!-- 当前的日志文件存放路径 -->
        <!-- 日志滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 历史日志文件的存放路径和名称 -->
            <fileNamePattern>./logs/gf_scanning.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 日志文件最大的保存历史 数量-->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <!-- 日志文件中日志的格式 -->
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>
</configuration>
로그인 후 복사
e
비정상적인 상황

이 발생했습니다. 이상한 문제가 발생했습니다.위 구성에 따라 logback을 구성하면 대부분의 프로젝트가 정상적으로 실행되고 로그를 파일에 저장할 수 있지만 한 프로젝트가 시작될 때 오류가 발생했습니다.

로깅 시스템이 'classpath:logback-spring.xml'의 구성을 사용하여 초기화하지 못했습니다.
java.lang.IllegalStateException: org.springframework.boot.logging.logback의 classpath:logback-spring.xml
에서 로그백 로깅을 초기화할 수 없습니다. .LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:168)
    org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
    org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57 )
    org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
    org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:316)
    org.springframework에서 .boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240)
    at org.springframework.boot.context.logging .LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
    org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java :169 )
    org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    org.springframework.boot.context에서 .event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85)
    at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66)
    java.util.ArrayList.forEach(ArrayList.java:1257)
    에서 org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
    에서 org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114)
    에서 org.springframework.boot.SpringApplicationRunListeners.envir onmentPrepared(SpringApplicationRunListeners. java:65)
    org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:339)
    org.springframework.boot.SpringApplication.run(SpringApplication.java:297)
    org.springframework.boot.SpringApplication에 있습니다. run(SpringApplication.java:1312)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
    at cn.piesat.ScanningApplication.main(ScanningApplication.java:18)
원인: ch.qos. logback.core.joran.spi.JoranException: ch.qos.logback.core.joran.event.SaxEventRecorder.buildSaxParser(SaxEventRecorder.java:89)
    ch.qos.logback.core.joran에서 파서 구성 오류가 발생했습니다. event.SaxEventRecorder.recordEvents(SaxEventRecorder.java:57)
    ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:151)
    ch.qos.logback.core.joran.GenericConfigurator.doConfigure( GenericConfigurator.java:110)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:188)
    org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:165)
    ... 22개 더보기
원인: org.xml.sax.SAXNotSupportedException: 기능: http://xml.org/ sax/features/external-general-entities
    org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:211)
    org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
org.apache.crimson.jaxp.SAXParserImpl.(SAXParserImpl.java:126)
    at org.apache.crimson.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:113)
    org.apache.crimson . jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:141)
at ch.qos.logback.core.joran.event.SaxEventRecorder.buildSaxParser(SaxEventRecorder.java:82)
... 28 more
Disconnected from the target VM, address: '127.0.0.1:64222', transport: 'socket'

Process finished with exit code 1

可能是由于jar包冲突,在pom文件中单独引入logback-core的依赖后,问题解决。

<!-- logback 日志 -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.7</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.7</version>
    <exclusions>
        <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
로그인 후 복사

위 내용은 Springboot가 Logback을 사용하여 로그 구성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿