SSM:SSM整合logback日志

引入依赖

使用maven工程创建的项目,在pom.xml配置文件中添加依赖:

<properties>
	<!--slf4j版本号-->
	<slf4j.version>1.7.30</slf4j.version>
</properties>
<!--日志门面,便于切换日志框架,方便输出日志-->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>${slf4j.version}</version>
</dependency>
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.2.3</version>
	<!--<scope>test</scope>-->
</dependency>
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-core</artifactId>
	<version>1.2.3</version>
</dependency>

创建logback.xml配置文件

在resources目录下创建logback.xml配置文件。在该文件中设置日志输出级别,输出格式,日志文件输出位置等。
spring会自动加载classpath路径下的配置文件,即resourecs目录下的配置文件,加载顺序如下:

  1. 首先尝试加载logback-test.xml配置文件;
  2. 如果未找到此类文件,尝试加载logback.groovy文件;
  3. 如果未找到此类文件,尝试加载logback.xml配置文件;
  4. 如果未找到此类文件,则使用服务提供程序加载工具(在 JDK 1.6 中引入)通过在类路径中查找文件META-INF\services\ch.qos.logback.classic.spi.Configurator 来解析 com.qos.logback.classic.spi.Configurator接口的实现。 其内容应指定所需实现的完全限定类名。
  5. 如果上述操作均未成功,则 Logback 将使用BasicConfigurator自动配置自身,这将导致日志记录输出定向到控制台。

logback.xml配置文件内容示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- Console log output -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度-->
            <pattern>%d{HH:mm:ss.SSS} [%thread] > %green(%-5level) %cyan(%logger{35}) - %m%n</pattern>
        </encoder>
    </appender>

    <!-- Log file debug output -->
    <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>F:/workspace/logs/rczp-ssm/%d{yyyy-MM-dd}.log.zip</fileNamePattern>
            <!--日志最大保存时间-->
            <maxHistory>365</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} > %-5level %X{X-B3-TraceId:-} ${springAppName:-} %logger{35} %m%n</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="Console"/>
        <appender-ref ref="File"/>
    </root>
</configuration>

使用slf4j打印日志

private static final Logger log = LoggerFactory.getLogger(Test.class);

常用的是log.info()

log.info("logback-Info");
log.warn("logback-Warn");
log.error("logback-Error");

如果logback.xml配置文件在resources目录下,那么SSM整合logback日志成功:
在这里插入图片描述

自定义logback.xml文件位置

引入依赖

使用maven工程创建的项目,在pom.xml配置文件中添加依赖:

<dependency>
	<groupId>org.logback-extensions</groupId>
	<!--logback监听器在该依赖中。该依赖中包含slf4j-api、logback-classic、logback-core三个依赖-->
	<artifactId>logback-ext-spring</artifactId>
	<version>0.1.4</version>
</dependency>

注意:在logback-ext-spring依赖中,已经依赖了slf4j-api、logback-classic、logback-core三个依赖,因此可以不用在pom.xml文件中引入这三个依赖,如果有依赖版本要求,可以在pom.xml中引入并指定版本。请注意有没有版本冲突的问题。

创建logback.xml配置文件

在resources/config目录下创建logback.xml配置文件,文件内容与上文中的一致即可。

配置监听器

在web.xml中设置监听器,加载logback.xml配置文件。logback日志正常运行。

<!-- logback -->
<context-param>
	<param-name>logbackConfigLocation</param-name>
	<!--logback.xml放在resources/config路径下-->
	<param-value>classpath:config/logback.xml</param-value>
</context-param>
<listener>
	<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>

日志输出正常:
在这里插入图片描述

如果logback.xml配置文件没有放在resources目录下,也没有配置LogbackConfigListener监听器,那么项目启动时会报以下错误,是因为logback.xml配置文件没有被加载。

javax.validation.NoProviderFoundException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

如果没有加载到任何配置,则 Logback 将使用BasicConfigurator自动配置自身,将日志记录输出定向到控制台。此时日志输出为debug级别,所有内容颜色一致。并且无法将日志输出到文件中。
在这里插入图片描述


版权声明:本文为weixin_44843569原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>