Maven依赖
<!-- Logback 此依赖直接包括了 logback-core 与 slf4j-api的依赖 同时版本越高,支持的功能越多-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.9</version>
</dependency>
在resources下添加配置文件 logback.xml 不过有人建议更名为 logback-spring.xml,我也建议更名为 logback-spring.xml
使用前务必在配置文件加入 application.properties中存在 spring.application.name
<?xml version="1.0" encoding="UTF-8"?>
<!-- scan 配置文件如果变更,配置文件将重新加载,默认:true-->
<!-- scanPeriod 配置自动检测文件变更的时间,需要给出时间单位,如果没有给出时间单位,则以毫秒为准。当sacn为true时,scanPeriod才会生效,默认:1分钟-->
<!-- debug 控制台打印logback所有日志信息(防止开发期间,获取日志不用再去输出的文件里查询了),生产环境以需要关闭-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- SpringProperty 因为property获取不到配置文件的值,使用springProperty来获取application配置文件的值 -->
<!-- 特别说明:当使用springProperty的时候,配置文件名字一定要设置为logback-spring,不然会报错。
因为项目的配置文件加载顺序是:logback.xml -> application.properties -> logback-spring.xml
虽然配置了defaultValue 他似乎没用!-->
<springProperty scope="context" name="log.appname" source="spring.application.name" defaultValue="springBoot"/>
<!-- 用于区分不同的jar包的日志 更高级的请查看 springProperty解释-->
<contextName>${log.appname}</contextName>
<!-- 自定义 日志存放路径。(设置完后,后面可使用${log.path} 来获取value)-->
<property name="log.path" value="./logs"/>
<!-- 自定义 日志输出格式 (设置完后,后面可使用${log.pattern} 来获取value)-->
<property name="log.pattern"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{30} - [%method,%line] - %msg%n"/>
<!-- 配置输出位置:控制台:ConsoleAppender -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder:定义控制台输出的日志格式 (这里引用了之前定义的log.pattern)-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 配置输出位置:系统日志输出 RollingFileAppender -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 定义日志文件输出路径 (引用上文定义的 log.path) -->
<file>${log.path}/${log.appname}-info.log</file>
<!-- 配置日志滚动政策:基于时间创建日志文件 TimeBasedRollingPolicy -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 配置日志滚动政策的文件名格式 -->
<fileNamePattern>${log.path}/${log.appname}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 配置:日志滚动周期90天 似乎国家要求保留操作日志90天+-->
<maxHistory>90</maxHistory>
<!-- 配置:日志大小20GB -->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<!-- 不太清楚 大意是指定了单个文件最大10MB -->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<!-- 指定日志的输出格式 (引用上文定义log.pattern)-->
<encoder>
<pattern>${log.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 配置日志的过滤级别 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志级别 Error的配置 可在filter 对比区别 -->
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${log.appname}-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 需要修改自己的项目名 -->
<fileNamePattern>${log.path}/${log.appname}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<appender name="redenvelop-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${log.appname}-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/${log.appname}-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.xl" level="info"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="console"/>
</root>
<!-- 系统操作日志 -->
<root level="info">
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
<!-- 系统用户操作日志 需要指定 name-->
<logger name="redenvelop-user" level="info">
<appender-ref ref="redenvelop-user"/>
</logger>
</configuration>
特别说明:项目运行的时候 nohup日志会特别大。nohup代表的是控制台日志。一旦项目重启,控制台日志文件会被覆盖掉,XXX-info.log 或 XXX-error.log 则不会被覆盖!
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤