GVKun编程网logo

Spring Boot忽略logback-spring.xml(springboot启动忽略某个类)

5

在这篇文章中,我们将带领您了解SpringBoot忽略logback-spring.xml的全貌,包括springboot启动忽略某个类的相关情况。同时,我们还将为您介绍有关-Dlogback.con

在这篇文章中,我们将带领您了解Spring Boot忽略logback-spring.xml的全貌,包括springboot启动忽略某个类的相关情况。同时,我们还将为您介绍有关-Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略、. spring boot 日志升级篇 —logback【从零开始学 Spring Boot】、logback.xml for spring boot、logback使用(springboot 和springmvc)的知识,以帮助您更好地理解这个主题。

本文目录一览:

Spring Boot忽略logback-spring.xml(springboot启动忽略某个类)

Spring Boot忽略logback-spring.xml(springboot启动忽略某个类)

如何解决Spring Boot忽略logback-spring.xml?

我知道它有些旧,但是我遇到了同样的问题并弄清楚了…所以原因很简单,就是您在类路径上有一个logback.xml(在某些情况下,不一定要在您启动的项目中)这是一个依赖项)。

在这里看看:org.springframework.boot.logging.AbstractLoggingsystem.initializeWithConventions(LoggingInitializationContext, LogFile)

设置一个断点,那么您将看到。

如果spring boot在类路径上找不到任何logback配置(“ logback-test.groovy”,“ logback-test.xml”,“ logback.groovy”,“ logback.xml”),则logback-spring.xml将是已接。

解决方法

我有2个使用Logback的Spring Boot(1.4.1-RELEASE)控制台应用程序。这两个配置文件 大致 相同,位于我的 / src
/ main / resources
文件夹中,名为 logback-spring.xml

这两个项目都在其pom.xml中包含了maven依赖spring-boot-starter-logging,并获取了Logback版本1.1.7。

在两个poms中定义的Spring Boot配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
    <relativePath />
</parent>

<groupId>d.m.v.app-a</groupId>
<artifactId>my-app-a</artifactId>
<version>1.0.16-SNAPSHOT</version>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
</dependencies>

但是,在运行应用程序时,其中一个似乎完全忽略了logback配置,而另一个则按预期进行了配置。

如果我将无法正常运行的应用程序的文件名更改为 logback.xml ,则它突然可以正常工作(即使使用我在其中使用的spring配置文件)。

所涉及的任何配置(即pom.xml,application.properties等)都没有明显的区别。

有人知道为什么会这样吗?我发现这种行为令人困惑。

-Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略

-Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略

我们有一个spring-boot 1.0.RC1应用程序,其中配置了用于日志记录的logback和src / test /
resources中的logback.xml文件。当我们从maven运行spring-
boot时,似乎可以看到并尊重logback文件。(这是我们在spring-boot徽标之后需要的日志记录格式)

D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel>mvn  clean spring-boot:run -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile=src/test/resources/logback.xml

<snip/>

[INFO] --- spring-boot-maven-plugin:0.5.0.M7:run (default-cli) @ my-app-camel ---
06:41:56,011 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [src/test/resources/logback.xml] at [file:/D:/Users/myName/My%20Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml]
06:41:56,150 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
06:41:56,170 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 5 seconds
06:41:56,171 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel\src\test\resources\logback.xml]] every 5 seconds.
06:41:56,172 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
06:41:56,223 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
06:41:56,233 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
06:41:56,276 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
06:41:56,389 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [me.moocar.logbackgelf.GelfAppender]
06:41:56,398 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [GELF]
06:41:56,567 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.my-co.my-app.] to DEBUG
06:41:56,568 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.my-co.my-app.] to false
06:41:56,569 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[com.my-co.my-app.]
06:41:56,571 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.] to DEBUG
06:41:56,572 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.] to false
06:41:56,572 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[org.]
06:41:56,573 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
06:41:56,574 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
06:41:56,574 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
06:41:56,578 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4ffdcca5 - Registering current configuration as safe fallback point

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__,| / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::            (v1.0.0.RC1)

06:41:57.436 [com.my-co.my-app.Application.main()] INFO  com.my-co.my-app.Application - Starting Application on MY-LAPTOP-HOSTNAME with PID 7812 (started by myName)
06:41:57.952 [com.my-co.my-app.Application.main()] INFO  o.s.b.f.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [META-INF/spring/camel-server.xml]

<etc./>

但是,当我们删除潜入src / java /
resources的流氓logback.xml文件并在其他所有内容不变的情况下重新运行时(请确保我们也清除了目标中的文件):

D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel>mvn  clean spring-boot:run -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile=src/test/resources/logback.xml

<snip/>

[INFO]
[INFO] <<< spring-boot-maven-plugin:1.0.0.RC1:run (default-cli) @ my-app-camel <<<
[INFO]
[INFO] --- spring-boot-maven-plugin:1.0.0.RC1:run (default-cli) @ my-app-camel ---
06:53:59,598 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [src/test/resources/logback.xml] at [file:/D:/Users/myName/My%20Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml]
06:53:59,736 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
06:53:59,755 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 5 seconds
06:53:59,756 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\Users\myName\My Projects\Work\my-co\my-app\src\my-app\my-app-camel\src\test\resources\logback.xml]] every 5 seconds.
06:53:59,757 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
06:53:59,806 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
06:53:59,817 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
06:53:59,858 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
06:53:59,971 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [me.moocar.logbackgelf.GelfAppender]
06:53:59,980 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [GELF]
06:54:00,144 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.my-co.my-app.] to DEBUG
06:54:00,144 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.my-co.my-app.] to false
06:54:00,145 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[com.my-co.my-app.]
06:54:00,148 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.] to DEBUG
06:54:00,148 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.] to false
06:54:00,149 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[org.]
06:54:00,150 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
06:54:00,150 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
06:54:00,151 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
06:54:00,154 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@54c1f582 - Registering current configuration as safe fallback point

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__,| / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::            (v1.0.0.RC1)

2014-02-12 06:54:01.023  INFO 5240 --- [lication.main()] com.my-co.my-app.Application          : Starting Application on MY-LAPTOP-HOSTNAME with PID 5240 (started by myName)
2014-02-12 06:54:01.564  INFO 5240 --- [lication.main()] o.s.b.f.xml.XmlBeanDefinitionReader      : Loading XML bean definitions from class path resource [META-INF/spring/camel-server.xml]

<etc./>

您会注意到,spring-boot启动后的日志记录格式与第一个输出不同。但是,logback(在Spring-Boot启动之前)报告它在src / test
/ resources中看到了logback.xml,就像第一次一样。

感兴趣的是,我们的logback.xml(位于src / java / resources和src / test / resources中都如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds">

    <appender name="STDOUT">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="GELF">
        <facility>logback-gelf-test</facility>
        <graylog2ServerHost>XXX.XXX.XXX.XXX</graylog2ServerHost>
        <graylog2ServerPort>NNNNN</graylog2ServerPort>
        <useLoggerName>true</useLoggerName>
        <useThreadName>true</useThreadName>
        <useMarker>true</useMarker>
        <graylog2ServerVersion>0.9.6</graylog2ServerVersion>
        <chunkThreshold>1000</chunkThreshold>
        <messagePattern>%m%rEx</messagePattern>
        <shortMessagePattern>%.-100(%m%rEx)</shortMessagePattern>
        <additionalField>ipAddress:_ip_address</additionalField>
        <additionalField>requestId:_request_id</additionalField>
        <staticAdditionalField>_node_name:www013</staticAdditionalField>
        <includeFullMDC>true</includeFullMDC>
    </appender>

    <logger name="com.my-co.my-app." level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="org." level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <!--<appender-ref ref="GELF" />-->
    </root>

</configuration>

因此,总而言之,似乎(虽然我可能错了),当logback.xml与spring-boot应用程序捆绑在一起时,就可以看到并使用它(例如,在src /
java / resources中),但是当我们不捆绑时,然后,尽管logback尽了最大努力,却被忽略了。

至于解决这个问题,我们很困惑。我们猜想在我们的spring-boot
jar中有什么地方会优先考虑,或者关闭logback,或者介入并告诉logback忽略刚刚被告知的内容,并使用另一个默认值。

另外,我们很愚蠢,但看不到它。感谢所有的帮助。

. spring boot 日志升级篇 —logback【从零开始学 Spring Boot】

. spring boot 日志升级篇 —logback【从零开始学 Spring Boot】

. spring boot 日志升级篇 —logback【从零开始学 Spring Boot】

https://www.cnblogs.com/warking/p/5710303.html

http://logback 的使用和 logback.xml 详解

logback.xml for spring boot

logback.xml for spring boot

logback.xml config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <conversionRule conversionWord="clr" converter/>
    <conversionRule conversionWord="wex" converter/>
    <conversionRule conversionWord="wEx" converter/>
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>


    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>

    <appender name="CONSOLE">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy>
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

logback使用(springboot 和springmvc)

logback使用(springboot 和springmvc)

Logback介绍

     Logback是log4j的后续版本。 它是由log4j的创始人Ceki Gülcü设计的。logback比所有现有的日志系统都要快,而且占用的空间也比所有现有的日志系统都要小。同样重要的是,logback提供了在其他日志系统中缺少的独特而有用的特性。

参考地址 https://logback.qos.ch/manual/architecture.html  

Logback架构

     在当前时间, Logback 分为三个模块, logback-core, logback-classic, logback-access。core模块是其他模块的基础。classic模块相当于一个改进版的log4j。

     Logback建立三个主要的类上:Logger 打印日志 Appender 输出源(日志输入到什么地方),Layout(日志的布局)。这三种类型的组件协同工作,使开发人员可以根据消息类型和级别来记录消息,并在运行时控制这些消息的格式以及报告的位置。

Logger

  负责日志的打印,分为五个等级(从低到高TRACE, DEBUG, INFO, WARN and ERROR),如何没有分配等级,则选择祖先的等级。为了确保每个logger都有等级,root looger 分配一个default 为debug的等级。下面例子显示的是分配的日志级别,以及最终起作用的级别。

例 1 (没有指定,使用root的级别)

Logger  名 分配的级别 起作用的级别
root DEBUG DEBUG
X none DEBUG
X.Y none DEBUG
X.Y.Z none DEBUG

例 2(指定,则使用指定的级别)

Logger 名 分配的级别 起作用的级别
root ERROR ERROR
X INFO INFO
X.Y DEBUG DEBUG
X.Y.Z WARN WARN

例 3(x.y没指定,则使用直接祖先的级别)

Logger 名 分配的级别 起作用的级别
root DEBUG DEBUG
X INFO INFO
X.Y none INFO
X.Y.Z ERROR ERROR

例 4(没指定,则使用直接祖先的级别)

Logger name 分配的级别 起作用的级别
root DEBUG DEBUG
X INFO INFO
X.Y none INFO
X.Y.Z none INFO

上面说过说过日志级别从低到高为  TRACE < DEBUG < INFO <  WARN < ERROR.如果定义了高日志级别,低日志级不打印,不起作用。

Appender

  它负责将日志事件以合适的格式输出到指定的地方:console控制台,文件(.log,.html,.txt格式),mysql数据库。定义输出源必须要实现Appender 接口,核心抽象方法是doAppend(E event)。logback已经给我提供了实现的接口,我们直接使用就行了

Encoders

  编码器负责将一个事件转换为一个字节数组,并将字节数组写入输出流中。

Layouts

布局是用于将传入事件转换为字符串的逻辑组件。

filter 

对日志级别过滤。下面介绍几个常用的类:

ThreSholdFilter ,入门级过滤。对于小于该日志级别的日志就行过滤,如下配置,虽然指定日志级别为debug,但是>=info 级别的日志,才会被打印

<filter>
   <level>info</level>
</filter>
<root level="Debug">

 

EvaluatorFilter,通用的校验过滤。对EventEvaluator事件校验器进行了封装。这里我们使用EventEvaluator 的子类JaninoEventEvaluator,该类可以使用java 语言写过滤表达式,对我们java程序员来说,非常便利。脚本如下:


        <filter>
  <!--默认事件校验使用的就是JaninoEventEvaluator,evaluator  可以不显示指定JaninoEventEvaluator-->    
            <evaluator>
                <expression>
            <!-- 该过滤表达式意思是,如果root 日志级别大于debug,则输入,如果不是,则输入我们自己定义com.test包下的日志。所依赖的三方jar包debug日志不输出。三方jar包产生的日志是对我们调试是没有帮助的,冗余的,因此过滤掉-->
                if(level > DEBUG){
                    return true;
                    }
                    return logger.contains("com.test");
                </expression>
            </evaluator>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter>

注意,JaninoEventEvaluator依赖Janino jar包,因此,使用前,maven/gradle 要加入下面依赖:

compile ''org.codehaus.janino:janino:3.0.6''

 

配置文件

下面是一个logback的配置例子,里面包含了生产用到的配置,并对配置进行了详细的说明。创建一个logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
#10秒监测一次配置文件,如果改动,则重新加载配置,这在测试和生产上都比较有用
<configuration scan="true" scanPeriod="10 seconds">
    <!--<timestamp key="bySecond" datePattern="YYYY-MM-dd"/>-->

<!--logback提供了输出到文件的输出源,直接使用RollingFileAppender输出源可对文件进行转换(特定情况下,对日志进行处理)。-->
<appender name="FILE">
<!--实时日志输出路径-->
    <file>../logs/ctest.log</file>
   <!--转换日志策略-->
    <rollingPolicy>
    <!--转换模式,日志按天以test-2017-07-06.log形式存储,最多存30天,30天之后自动删除,所有日志文件总大小不能超过10GB,如果超过则最老的文件会被删除-->
      <fileNamePattern>../logs/test-%d{YYYY-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>10GB</totalSizeCap>
    </rollingPolicy>
   

 <!--日志是否立即输出,设为true则,立即输出日志,如果程序退出,日志不会丢失,但是性能会比在false情况下慢四倍-->
 <immediateFlush>false</immediateFlush>
  <!--日志输入格式化,从左到右依次为: 
 输出时间;日志级别;生成日志事件的当前线程;对生成器包名进行简化com.test.HomeController 会打印成c.t.HomeController;日志请求的文件,及所在的行号,会影响性能,建议不要配置;打印日志消息,换行
--> 
   <encoder>
            <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
    </appender>
<!--输出到控制台-->
    <appender name="STDOUT">
        <!-- 和上面格式化一样,唯一区别是对控制台日志内容加了颜色,-->
        <encoder>
            <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
        </encoder>
    </appender>
<!--指定一个root 的日志级别为info,指定上面两个输出源继承root日志级别-->
    <root level="info">
        <appender-ref ref="STDOUT" />
         <appender-ref ref="FILE" />
    </root>
<!--指定对应包下的class日志级别,和EvaluatorFilter作用相同-->
<logger name="com.test" level="WARN">
</configuration>

使用

 logback使用很简单,加入依赖,将logback.xml文件丢到项目里即可。下面介绍springboot和springmvc的两种框架下的使用方法。

 springboot

      我们项目开发中使用的springboot框架,springboot默认使用的logback框架,只要将上述文件名修改为logback-spring.xml(springboot建议在文件名上加-spring)。放到src/main/resources目录下。启动程序,打印日志如下:

017-07-06 19:43:06.574 [main] INFO  o.a.tomcat.util.net.NioSelectorPool - Using a shared selector for servlet write/read
2017-07-06 19:43:06.591 [main] INFO  o.s.b.c.e.t.TomcatEmbeddedServletContainer - Tomcat started on port(s): 82 (http)
2017-07-06 19:43:06.596 [main] INFO  com.test.TestApplication - Started TestApplication in 14.101 seconds (JVM running for 14.721)

  springmvc

     gradle 或maven中加入以下依赖:

gradle

def logback.version = ''1.2.3''
def slf4j.version = ''1.7.21''

dependencies {  
  compile "ch.qos.logback:logback-core:${logback.version}"
  compile "ch.qos.logback:logback-classic:${logback.version}"
  compile "org.slf4j:slf4j-api:${slf4j.version}"
#使用filter才需引用这个jar
  compile ''org.codehaus.janino:janino:3.0.6''
}

maven 

  <properties>
         <logback.version>1.2.3</logback.version>
         <slf4j.version>1.7.21</slf4j.version>
  </properties>
 <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>

          <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>       
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency> 

        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.0.6</version>
        </dependency> 
</dependencies>

  然后将logback.xml 放入src/main/resources目录下启动即可。启动即可看到配置日志已经生效。

今天关于Spring Boot忽略logback-spring.xmlspringboot启动忽略某个类的分享就到这里,希望大家有所收获,若想了解更多关于-Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略、. spring boot 日志升级篇 —logback【从零开始学 Spring Boot】、logback.xml for spring boot、logback使用(springboot 和springmvc)等相关知识,可以在本站进行查询。

本文标签: