文章目录
1. 写在前面关于LOG_HOME 两点说明
<!--<property name="LOG_HOME" value="/var/jenkins_home/log/application_log"/>-->
1.1 如果不写(会有相对路径),本地运行:日志文件默认在项目根目录,会新增一个文件家:LOG_HOME_IS_UNDEFINED,jar包运行会在根目录的web下面新建LOG_HOME_IS_UNDEFINED文件夹。
1.2 当指定位置,会在指定位置,window会是在当前磁盘的创建。本地运行或者jar包运行位置不变。
2. logback-spring.xml 模板
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 定义日志文件的存储地址 勿在LogBack的配置中使用相对路径 如果不定义不出现在项目根目录-->
<!--<property name="LOG_HOME" value="/var/jenkins_home/log/application_log"/>-->
<!-- source从配置文件yml中读取值-->
<springProperty scope="context" name="app_name" source="spring.application.name" defaultValue="zeus"/>
<property name="info" value="info"></property>
<property name="debug" value="debug"></property>
<property name="error" value="error"></property>
<property name="warn" value="warn"></property>
<!-- 控制台标准输出,debug使用 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--info日志存储-->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${app_name}/${info}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${app_name}/${info}/info.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%-15.15(%thread)] %-50.50(%logger{50}) : %line %method %msg%n</pattern>
</layout>
</appender>
<!--debug日志存储-->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的名称,不写就默认使用fileNamePattern标签规则 -->
<!--<file>${LOG_HOME}/${app_name}/${debug}/debug.log</file>-->
<!--过滤,只存储DEBUG级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<!-- onMatch 符合过滤条件的标签 -->
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
%i:当文件大小超过maxFileSize时,按照i进行文件滚动 -->
<fileNamePattern>${LOG_HOME}/${app_name}/${debug}/debug.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
当maxHistory是30,则只保存最近一个月文件,删除之前的旧文件。
-->
<MaxHistory>30</MaxHistory>
<!-- 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy
是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%-15.15(%thread)] %-50.50(%logger{50}) : %line %method %msg%n</pattern>
</layout>
</appender>
<!--warn日志存储-->
<appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${app_name}/${warn}/warn.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME/${app_name}}/${warn}/warn.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>365</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%-15.15(%thread)] %-50.50(%logger{50}) : %line %method %msg%n</pattern>
</layout>
</appender>
<!--error日志存储-->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${app_name}/${error}/error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${app_name}/${error}/error.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>31</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%-15.15(%thread)] %-50.50(%logger{50}) : %line %method %msg%n</pattern>
</layout>
</appender>
<!--mybatis 日志-->
<appender name="mybatis" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<File>${LOG_HOME}/${app_name}/mybatis/sql.log</File>-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
</filter>
<!-- 按天来回滚 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${app_name}/mybatis/sql.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%-15.15(%thread)] %-50.50(%logger{50}) : %msg%n</pattern>
</layout>
</appender>
<logger name="com.ict.ac.dao" level="DEBUG">
<appender-ref ref="mybatis"></appender-ref>
</logger>
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="info"/>
<appender-ref ref="warn"/>
<appender-ref ref="error"/>
<appender-ref ref="debug"/>
</root>
</configuration>
3. 结果呈现
前提:我的源代码在D盘
3.1 指定位置:
3.2相对位置,不指定路径
1 本地运行
2.jar包运行
注意服务器上jar运行时在jar包所在的目录下:
版权声明:本文为qq_31564573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。