SpringBoot、SpringMVC集成logback日志

日志主要分为:trace

  • trace:主要为程序的追踪,判断程序执行到哪步
  • debug:调试使用的日志输出
  • info:输出一些信息帮助了解程序运行状态
  • warn:程序发出一些警告信息
  • error:程序出错时发出的信息

常用的日志主要分为两种:logback和log4j,都是基于sl4j开发演变而来的,logback更方便使用的人更多,配置里面会有很多坑(生成日志路径…)帮大家避免一下。

前言

项目中我引用lombok包的@Slf4j注解,所以需要输入日志类中不需要再加

Logger log= LoggerFactory.getLogger(getClass());

如果我们没有使用lombok包需要添加代码为:


public class SpringbootApplicationTests {

    Logger log= LoggerFactory.getLogger(getClass());
    
    public void loggerInfo() {
    	log.trace("这是trace");
    	log.debug("这是debug");
        log.info("这是info");
        log.warn("这是warn");
        log.error("这是error");
    }
}

logback.xml内容



<configuration scan="false" scanPeriod="60 seconds" debug="false">
    
    <property name="LOG_HOME" value="/app/log" />
    
    <property name="appName" value="journal-spring">property>
    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] ====== %-5level %logger{50} - %msg%npattern>
        layout>
    appender>

    
    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_HOME}/${appName}.logfile>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.logfileNamePattern>
            
            <MaxHistory>365MaxHistory>
            
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
        rollingPolicy>
        
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] -===== [ %-5level ] [ %logger{50} : %line ] - %msg%npattern>
        layout>
    appender>

    
    

    




    
    <root level="info">
        <appender-ref ref="stdout" />
        <appender-ref ref="appLogAppender" />
    root>
    
	<root level="warn">
        <appender-ref ref="stdout" />
        
        <appender-ref ref="appLogAppender" />
    root>

	

    

configuration>

SpringBoot

  • 引用pom依赖
		
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-loggingartifactId>
        dependency>
  • 通过配置文件使用日志文件
# 日志配置
# 不指定路径在当前项目下生成日志,值为:G:/springboot.log在G盘下生成
logging.file=springboot.log
# 当前磁盘的根路径创建spring/log文件夹,使用spring.log作为默认文件
#logging.path=/spring/log
#logging.file和logging.path不能同时使用,否则不起作用,一般使用logging.file

# 控制台输出日志格式  日期时间,线程名   级别  全类名50个字符   消息和换行
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中输出日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  • 使用logback.xml
    把logback.xml放到resources目录下即可

日志文件相对保存路径设置可分以下三种:

  • value="log"输入在项目文件夹下
  • value="/log"输入在项目文件夹下
  • value="。。/log"输入在项目上一次文件夹下

SpringMVC

  • 引用pom依赖
		
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.17version>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-coreartifactId>
            <version>1.2.3version>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-classicartifactId>
            <version>1.2.3version>
        dependency>
  • 使用logback.xml
    把logback.xml放到resources目录下即可

日志文件相对保存路径设置可分以下三种:

  • value="log"表示保存到程序运行目录,在tomcat中为bin目录
  • value="/log"表示保存到系统目录,比如你的项目运行在D盘,这个就在D盘的根目录下。
  • value="。。/log"表示保存到程序运行目录的父目录,tomacat运行时,有一个logs的目录,最好配置时,加上自己应用名称,以做区分。

关于logback.xml的命名问题

在我们启动tomacat后,会看到日志中有一段内容,如下 :
SpringBoot、SpringMVC集成logback日志_第1张图片
可以看到,logback在加载配置时,会先去找名为logback-test.xml,然后找logback.groovy,最后找logback.xml,如果找到就会应用我们的配置。如果未找到,就默认配置。
如果我们不想用logback.xml这个名称,例如使用logback-spring.xml,我们可以在项目的web.xml里面配置
pom文件引用

		<dependency>
            <groupId>org.logback-extensionsgroupId>
            <artifactId>logback-ext-springartifactId>
            <version>0.1.4version>
        dependency>

web.xml

	<context-param>
        <param-name>logbackConfigLocationparam-name>
        <param-value>classpath:logback-spring.xmlparam-value>
    context-param>
    <listener>
        <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListenerlistener-class>
    listener>

你可能感兴趣的:(架构)