目录
日志级别
TRACE < DEBUG < INFO < WARN < ERROR
SL4J说明
logback
maven
默认支持,引入springboot相关依赖即可
日志配置
#logging:
# config: classpath:logback/logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="1 minute" debug="false"
xmlns="http://ch.qos.logback/xml/ns/logback"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback
https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
<!--参考: https://blog.csdn.net/mu_wind/article/details/99830829 -->
<contextName>logback</contextName>
<!--直接定义属性-->
<property name="fileSizeLog" value="logs/fileSizeLog"/>
<property name="fileDailyLog" value="logs/fileDailyLog"/>
<property name="maxFileSize" value="10KB"/>
<property name="totalFileSize" value="1GB"/>
<!--控制台日志-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} -[%file:%line]- %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--滚动文件日志-->
<appender name="fileSizeLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${fileSizeLog}.log</file>
<encoder>
<!--日志输出格式-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level -[%file:%line]- %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${fileSizeLog}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
<totalSizeCap>${totalFileSize}</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="fileDailyLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${fileDailyLog}.log</file>
<encoder>
<!--日志输出格式-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level -[%file:%line]- %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${fileDailyLog}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>${totalFileSize}</totalSizeCap>
</rollingPolicy>
</appender>
<!--创建一个具体的日志输出-->
<!-- <logger name="com.mutest" level="debug" additivity="true">
<!–可以有多个appender-ref,即将日志记录到不同的位置–>
<appender-ref ref="STDOUT"/>
<appender-ref ref="fileLog"/>
</logger>-->
<!--打印mybatis sql语句-->
<!--详见: https://blog.csdn.net/u012489412/article/details/86691611 -->
<logger name="com.msb.mapper" level="DEBUG"/>
<!--基础的日志输出-->
<root level="info">
<appender-ref ref="STDOUT"></appender-ref>
<appender-ref ref="fileSizeLog"></appender-ref>
<appender-ref ref="fileDailyLog"></appender-ref>
</root>
</configuration>
表达式说明
%date:表示日期
%thread:表示线程名
%-5level:表示级别从左显示 5 个字符宽度
%logger{50}:表示 Logger 名字最长 50 个字符
%msg:表示日志消息
%n:换行符
参考:
SpringBoot-3:集成SLF4J+logback进行日志记录_云深不知处-CSDN博客
log4j
maven
剔除logback、log4j2相关依赖,并添加log4j依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--剔除其他日志依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--log4j依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
日志配置
# 参考: https://blog.csdn.net/zzq900503/article/details/87629782?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163867586716780264048002%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163867586716780264048002&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-13-87629782.first_rank_v2_pc_rank_v29&utm_term=springboot+log4j&spm=1018.2226.3001.4187
log4j.rootCategory=INFO,stdout,file
# com.test包下的日志配置
log4j.category.com.msb.mapper=DEBUG
#输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
# com.test下的日志输出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/my.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
表达式说明
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。
参考
log4j2
maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--剔除其他日志依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--log4j2依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
日志配置
<?xml version="1.0" encoding="UTF-8"?>
<!--官方地址: https://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax -->
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- status log4j2内部日志级别 -->
<configuration status="INFO">
<!-- 全局参数 -->
<Properties>
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1}:%L -%m%n</Property>
<Property name="displayName">myApp</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
</Console>
<!-- 文件 每次运行程序会自动清空,由append属性决定 -->
<File name="error" fileName="${displayName}_error.log" append="false">
<!-- 指定error 级别的日志 -->
<ThresholdFilter level="ERROR" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
</File>
<!-- 滚动文件 -->
<RollingFile name="rollingFile" fileName="${displayName}.log"
filePattern="${displayName}_%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<!-- 按大小划分 -->
<SizeBasedTriggeringPolicy size="50 MB" />
</RollingFile>
</Appenders>
<Loggers>
<!-- <Logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"
/> <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"
/> <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"
/> -->
<Logger name="org.springframework" level="info" />
<Logger name="com.msb.mapper" level="DEBUG" />
<Root level="DEBUG">
<AppenderRef ref="console"></AppenderRef>
<AppenderRef ref="error"></AppenderRef>
<AppenderRef ref="rollingFile"></AppenderRef>
</Root>
</Loggers>
</configuration>
表达式说明
数据类型 | 转换字符 | 输出日志 |
日期 | %-d{yyyy-MM-dd HH:mm:ss} %d{yyyy-MM-dd HH:mm:ss.SSS} | 2021-05-08 14:51:59 1048 2021-05-08 14:52:32.071 |
输出从JVM启动到创建日志事件所经过的毫秒数 | %-5r | 1048 |
线程名 | %t | main |
记录器名称 | %c %c{3} | com.tech.graph.test.basic.SingleExample test.basic.SingleExample |
日志级别 | %-5level %-5p | INFO |
日志信息 | %msg %m | read conf info |
换行 | %n | 日志结束换行 |
输出所在方法名 | %M | main |
输出所在行号 | %L | 33 |
输出与生成日志事件的线程相关联的线程上下文堆栈(也称为嵌套诊断上下文或NDC) | %x | [ndc log test] |
输出与生成日志事件的线程相关联的线程上下文映射(也称为映射诊断上下文或MDC) | %X | {ip=172.25.21.22, port=8080} |
参考
官网:官网说明