logback-spring.xml
springboot默认采用slf4j+logback日志,使用logback-spring.xml(logback.xml)作为配置文件
在application.yaml中配置:
logging:
config: /config/logback.xml #docker中配置
#config: classpath:logback.xml #本地配置
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="moduleName" value="rent-backend" />
<property name="logPath" value="${user.dir}/logs" />
<!-- 引入spirng boot默认的logback配置文件(主要用他来输出彩色的控制台) -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--ch.qos.logback.core.ConsoleAppender 是 logback 类的完整路径-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%n
</pattern>
</layout>
</appender>
<!--RollingFileAppender 可以做到每天输出一个日志文件-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--LevelFilter -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--匹配则禁止-->
<onMatch>DENY</onMatch>
<!--不匹配则应用-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%n
</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--输出路径-->
<fileNamePattern>${logPath}/${moduleName}-info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--ThresholdFilter 根据范围过滤,即大于等于 error 的日志都记录-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%n
</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/${moduleName}-error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="error">
<appender-ref ref="consoleLog"></appender-ref>
<appender-ref ref="fileInfoLog"></appender-ref>
<appender-ref ref="fileErrorLog"></appender-ref>
</root>
</configuration>
logback配置文件参考二
<configuration>
<!-- 用来定义变量,name 就是属性,value 就是值,可以在需要的地方引入 name,实现复用 -->
<!-- Ps: 这里实际上就是在配置日志文文件输出的位置 -->
<property name="LOG_HOME" value="applog"/>
<!-- 引入spirng boot默认的logback配置文件(主要用他来输出彩色的控制台) -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--
appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,
常用就是控制台输出策略和文件输出策略。
-->
<!-- Console 输出设置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<charset>utf8</charset>
<!--默认格式输出: 使用彩色面板-->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 默认输出的日志文件 -->
<file>${LOG_HOME}/app.log</file>
<!--按天分日志,不按大小-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名和位置: 可以使用相对路径或者绝对路径,如果是相对路径,会直接在当前项目根目录下生成-->
<fileNamePattern>${LOG_HOME}/all.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!-- <totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<!--按天分日志和按大小分-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名和位置: 可以使用相对路径或者绝对路径,如果是相对路径,会直接在当前项目根目录下生成-->
<fileNamePattern>${LOG_HOME}/all.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<maxFileSize>50MB</maxFileSize>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!-- <totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--
root 标签是必须存在的,并且必须放在最后配置. 用来指定最基础的日志输出级别,只有一个level属性(级别最低是 info,否则报错)
可以包含零个或多个元素,appender-ref 就是在声明需要使用到哪些自定义配置,最后添加到这个logger。
-->
<root level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="5">
<Properties>
<Property name="log4j2.dirs">/home/apps/program/module/logs</Property>
</Properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%n"/>
<Filters>
<RegexFilter regex="^.*[\n|\r|\t]+.*$" onMatch="DENY" onMismatch="ACCEPT" ></RegexFilter>
</Filters>
</Console>
<RollingFile name="rollingFile_all" fileName="${log4j2.dirs}/all.log"
filePattern="${log4j2.dirs}/$${date:yyyy-MM}/all-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<Filters>
<RegexFilter regex="^.*[\n|\r|\t]+.*$" onMatch="DENY" onMismatch="ACCEPT" ></RegexFilter>
</Filters>
</RollingFile>
</appenders>
<loggers>
<logger name="com.cwp" level="debug" additivity="true">
<appender-ref ref="Console"/>
</logger>
<root level="ERROR">
<appender-ref ref="Console"/>
<appender-ref ref="rollingFile_all"/>
</root>
</loggers>
</configuration>
log4j.properties
# Output pattern : date [thread] priority category - message FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7
log4j.rootLogger=ERROR, Console, RollingFile
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%c{5}] - %m%n
#RollingFile
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=../all.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.com.cwp=INFO