Logback 使用
官方文档
http://logback.qos.ch/manual/appenders.html
依赖
默认 Springboot 自带依赖
1
| implementation group: 'org.springframework.boot', name: 'spring-boot-starter-logging'
|
配置
encoder 节点
<encoder>表示对日志进行编码:
%d{HH: mm:ss.SSS}——日志输出时间。
%thread——输出日志的进程名字,这在 Web 应用以及异步任务处理中很有用。
%-5level——日志级别,并且使用 5 个字符靠左对齐。
%logger{36}——日志输出者的名字。
%msg——日志消息。
%n——平台的换行符。
Root 子节点
root 节点是必选节点,用来指定最基础的日志输出级别,只有一个 level 属性,用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为 INHERITED 或者同义词 NULL。
默认是 DEBUG。可以包含零个或多个元素,标识这个 appender 将会添加到这个 logger。
1 2 3 4
| <root level="debug"> <appender-ref ref="console" /> <appender-ref ref="file" /> </root>
|
logger 子节点
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个 name 属性,一个可选的 level 和一个可选的 addtivity 属性。
name:用来指定受此 logger 约束的某一个包或者具体的某一个类。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值 INHERITED 或者同义词 NULL,代表强制执行上级的级别。如果未设置此属性,那么当前 logger 将会继承上级的级别。
addtivity:是否向上级 logger 传递打印信息。默认是 true。
1 2 3 4 5 6 7 8 9 10
| <root level="INFO"> <appender-ref ref="STDOUT"/> </root>
<logger name="zlin.site.framework.generator.controller.StudentController" level="WARN"/>
<logger name="zlin.site.framework.generator.controller.StudentController" level="INFO" additivity="false"> <appender-ref ref="STDOUT"/> </logger>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| <?xml version="1.0" encoding="UTF-8"?> <configuration> <springProperty scope="context" name="LOG_PATH" source="log.path" defaultValue="logAll"/> <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="app"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${APP_NAME}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log.%i.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy>
<encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${APP_NAME}.error.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.error.log.%i.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy>
<encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender>
<appender name="STUDENT" class="ch.qos.logback.core.FileAppender"> <file>${LOG_PATH}/student.log</file> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender>
<springProfile name="dev"> <root level="DEBUG"> <appender-ref ref="STDOUT"/> </root>
<logger name="zlin.site.framework" level="INFO"> <appender-ref ref="FILE"/> </logger>
<logger name="zlin.site.framework.generator.controller.StudentController" level="INFO" additivity="false"> <appender-ref ref="STUDENT"/> </logger> </springProfile>
<springProfile name="prod"> <root level="INFO"> <appender-ref ref="STDOUT"/> </root>
<logger name="zlin.site.framework" level="INFO"> <appender-ref ref="FILE"/> </logger>
<logger name="zlin.site.framework.generator.controller.StudentController" level="INFO" additivity="false"> <appender-ref ref="STUDENT"/> </logger> </springProfile>
</configuration>
|