springboot + logback根据不同模块打印日志

springboot + logback

logback是springboot默认的日志框架,这篇文章用logback实现根据不同模块输出日志到不同的文件中.

首先分析不同模块输出不同的日志文件到磁盘中,那就可以理解为不同的模块放在不同的包路径下,按照不同包路径输出到不同的文件中.

1. 具体思路

  1. 自定义一个输出到文件的appender(理解为日志输出器)
  2. 配置logger,logger的name为需要打印日志的不同包路径

2. 具体实现

  • 需要引入依赖:
		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

或者

		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

springboot默认用的就是logback日志所以不需要特定的引入logback的依赖包.

  • 需要在resource文件夹下创建一个logback-spring.xml文件,(自定义的logger是属于局部配置,它的优先级高于全局配置(指root),可以理解为局部配置覆盖全局配置)
    logback-spring.xml

<configuration>
    
    
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    root>
    
    
    
    <appender name="Biz_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}pattern>
        encoder>
        <file>${LOG_FILE}_BIZ.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}_BIZ.%d{yyyy-MM-dd}.%i.gzfileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-0}maxHistory>
        rollingPolicy>
    appender>

    <appender name="tr_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}pattern>
        encoder>
        <file>${LOG_FILE}_tr.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}_tr.%d{yyyy-MM-dd}.%i.gzfileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-0}maxHistory>
        rollingPolicy>
    appender>
    
    
    <logger name="com.sq.ws.system.controller.UserController" additivity="false" level="debug">
        
        <appender-ref ref="Biz_LOG"/>
        
        <appender-ref ref="CONSOLE"/>
    logger>
    

    <logger name="com.sq.ws.system.controller.TrUserRoleController" additivity="false" level="debug">
        <appender-ref ref="tr_log"/>
    logger>
configuration>
  • 最后在全局配置文件中指定log日志要输出的地址
    application.properties
logging.config=classpath:logback-spring.xml
# 指定日志要输出的位置
logging.file.path=/Users/wangshuai/project/mes/mes-system-service/src/main/resources/

到此根据不同模块输出到不同的日志文件中已经完成,进入测试即可.

总结

学习了springboot默认的logback的输出不同模块的日志配置,下面还会学习一下log4j怎么实现日志的管理配置.

你可能感兴趣的:(spring,boot,spring,java)