a. Spring Boot 默认的日志框架 logback

b. 日志配置

b1. application.properties 配置

logging.file 和 logging.path

logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=/var/log
如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
如果只配置 logging.path,在 /var/log文件夹生成一个日志文件为 spring.log
注:二者不能同时使用,如若同时使用,则只有logging.file生效

b2. 自定义日志配置(默认配置文件名)

根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging):logging.properties

b3. 自定义日志配置(加载配置文件)

application.properties中添加

logging.config=classpath: xxx.xml

c. logback 配置文件

c1. configuration tag 的三个重要属性:

scan: 当此属性设置为 true 时,配置文件如果发生改变,将会被重新加载,默认值为 true.
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒.当 scan 为 true 时,此属性生效.默认的时间间隔为 1 分钟.
debug: 当此属性设置为 true 时,将console上打印出 logback 内部日志信息,实时查看 logback 运行状态, 但这些logback内部日志不会记录到log文件中. 默认值为 false.

c2. 下面一共有2个属性,3个子节点

上下文名称: <contextName>logback</contextName>
每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。
变量: <property name="log.path" value="E:\\logback.log" />
用来定义变量值的标签,有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8" ?><!--
scan: 当此属性设置为 true 时,配置文件如果发生改变,将会被重新加载,默认值为 true.
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒.当 scan 为 true 时,此属性生效.默认的时间间隔为 1 分钟.
debug: 当此属性设置为 true 时,将console上打印出 logback 内部日志信息,实时查看 logback 运行状态, 但这些logback内部日志不会记录到log文件中. 默认值为 false.
-->
<configuration scan="false" scanPeriod="60 seconds" debug="false"><statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /><!-- 彩色日志格式 --><property name="CONSOLE_LOG_PATTERN"value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(--%line){gray} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" /><property name="FILE_LOG_PATTERN"value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} %clr(--%line){gray} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" /><!-- 全局参数 --><property name="LOG_HOME" value="/app/logs" /><property name="LOG_NAME" value="/demo_task" /><property name="LOG_PATH" value="${LOG_HOME}${LOG_NAME}" /><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- encoder 默认配置为class为PatternLayoutEncoder --><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{36} -%line : %msg%n</pattern></encoder></appender><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}${LOG_NAME}_%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数--><maxHistory>60</maxHistory></rollingPolicy><encoder><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} -%line : %msg%n</Pattern></encoder><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><!--滚动策略 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--路径 --><FileNamePattern>${LOG_HOME}/error${LOG_NAME}_error.%d{yyyy-MM-dd}.log</FileNamePattern></rollingPolicy><encoder><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %line : %msg%n</Pattern></encoder></appender><appender name="fileWarnLog" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>WARN</level></filter><!--滚动策略 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--路径 --><FileNamePattern>${LOG_HOME}/warn${LOG_NAME}_warn.%d{yyyy-MM-dd}.log</FileNamePattern></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %line : %msg%n</Pattern></layout></appender><logger name="org.mybatis" level="INFO"/><logger name="com.byrc.demo" level="DEBUG" /><root><level value="INFO" /><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /><appender-ref ref="fileWarnLog" /><appender-ref ref="fileErrorLog" /></root></configuration>

注:encoder和Layout:

https://blog.csdn.net/cw_hello1/article/details/51969554
https://yq.aliyun.com/ziliao/433297

  1. encoder:主要工作有两个:①将一个event事件转换成一组byte数组,②将转换后的字节数据输出到文件中。
  2. 其中layout仅仅完成了将一个event事件转换成一个字符串这一个功能。此外,layout不能控制将字符串写出到文件。

d. log4j2配置文件

d1. jar 引入

pom.xml

        <!-- spring-boot的web启动的jar包 --><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><!-- 引入log4j2依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- 如果要加载log的xxx.yml(eg:log4j2.yml)文件,加上这个才能辨认到文件 --><!--     <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-yaml</artifactId></dependency>--><!-- 异步日志 --><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId></dependency>

d2. Appenders配置(包括异步日志)

官网Appenders配置:http://logging.apache.org/log4j/log4j-2.3/manual/appenders.html

 <Async name="Async"><AppenderRef ref="infoLog"/>
</Async>

d3. logger异步日志配置

官网logger异步配置:http://logging.apache.org/log4j/log4j-2.3/manual/async.html#AllAsync

<AsyncLogger name="com.foo.Bar" level="trace" includeLocation="true"><AppenderRef ref="RandomAccessFile"/>
</AsyncLogger>

log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?><!--设置log4j2的自身log级别为warn-->
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<!-- No need to set system property "log4j2.contextSelector" to any valuewhen using <asyncLogger> or <asyncRoot>. -->
<configuration status="warn" monitorInterval="30"><!-- 全局参数 --><Properties><Property name="PID">????</Property><Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property><Property name="LOG_LEVEL_PATTERN">%5p</Property><Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property><Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property><Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property><property name="LOG_HOME" value="/app/logs" /><property name="LOG_NAME" value="/demo_task" /><property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n</property><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><property name="pattern2">[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%p] %c{1.} -%L : %m%n</property></Properties><Appenders><Console name="Console" target="SYSTEM_OUT" follow="true"><PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" /></Console><!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. --><RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${LOG_HOME}${LOG_NAME}.log"immediateFlush="true" append="false"filePattern="${LOG_HOME}${LOG_NAME}_%d{yyyy-MM-dd}_%i.log.gz"><PatternLayout pattern="${pattern2}"/><Filters><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/><ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><Policies><!--每滚动24小时,压缩--><TimeBasedTriggeringPolicy modulate="true" interval="24"/><SizeBasedTriggeringPolicy size="50 MB"/></Policies><!--最多可以保存20个文件--><DefaultRolloverStrategy max="20"/></RollingRandomAccessFile></Appenders><Loggers><Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" /><logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/><AsyncLogger name="com.byrc.demo" level="debug" ><AppenderRef ref="RollingRandomAccessFile"/></AsyncLogger><Root level="info"><AppenderRef ref="Console" /><!-- <AppenderRef ref="RollingRandomAccessFile"/>--></Root>
<!--        <asyncRoot level="info"><AppenderRef ref="Console" /><AppenderRef ref="RandomAccessFile"/></asyncRoot>--></Loggers></configuration>

https://logging.apache.org/log4j/2.x/
http://tengj.top/2017/04/05/springboot7/
https://www.cnblogs.com/lixuwu/p/5804793.html
https://yq.aliyun.com/ziliao/433297

springboot logback 、log4j2相关推荐

  1. java常用日志框架日志门面及实现 SLF4J 、Jboss-logging 、JCL、Log4j、Logback、Log4j2、JUL,springboot集成 log4j、log4j2

    java常用日志框架日志门面SLF4J .Jboss-logging .JCL.Log4j及实现 Logback.Log4j2.JUL,springboot集成 log4j.log4j2 .logba ...

  2. 带你理清 Java 混乱的日志体系 - log4j、logback、log4j2、jcl、SLFJ 究竟是啥关系?

    1.JAVA混乱的日志体系 换乱的java日志体系 case: SLF4J-JCL LOG4J-CORE LOGBACK SLF4J-SIMPLE JCL-OVER-SLF4J LOGBACK-COR ...

  3. Spring Boot(十)Logback和Log4j2集成与日志发展史

    一.简介 Java知名的日志有很多,比如:JUL.Log4j.JCL.SLF4J.Logback.Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看. 1.1 ...

  4. 一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面 ...

  5. spring、springboot集成 log4j日志、log4j2日志以及slf4j

    1.查看pringboot自带的日志框架 新建一个springboot 工程,查看依赖树 通过查看依赖树可以发现,springboot自带被loggong管理的log4j .logback等日志相关的 ...

  6. slf4j、jcl、jul、log4j1、log4j2、logback大总结

    2019独角兽企业重金招聘Python工程师标准>>> #1 系列目录# 2种日志接口框架,4种日志实现框架 jdk-logging.log4j.logback日志介绍及原理 jcl ...

  7. java log4j logback jcl_知识总结-Java日志框架Log4j、Log4j2、logback、slf4j、简介

    功能简介 上一篇介绍了为什么打印日志.什么时候打印日志以及怎么打印日志.本篇介绍下在项目开发中常见的日志组件以及关系. 先看一张图 接口:将所有日志实现适配到了一起,用统一的接口调用. 实现:目前主流 ...

  8. 一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系

    前言 之前都是使用SparkStreaming开发,最近打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上.因为Flink从1.7之后就不再提供Had ...

  9. Skywalking log4j、log4j2、logback tid注入方法

    Skywalking tid注入方法 log4j2 pom中引入以下依赖 <dependency><groupId>org.apache.skywalking</grou ...

最新文章

  1. 2022-2028年中国石油钻井井下工具行业市场研究及前瞻分析报告
  2. Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)
  3. Data Mining with Big Data--阅读笔记
  4. 设计模式之_Iterator_03
  5. ubuntu下安装jdk1.6.0_41
  6. 阿里云护航罗振宇2018“时间的朋友”跨年演讲,与千万观众一起跨年 1
  7. TCP/IP学习笔记-Qt中的ReuseAddressHint以及SO_REUSEADDR,以为组播常用场景分析
  8. 汇编语言:实现大小写字母转换
  9. java 串口tcp客户端访问串口tcp服务器_怎么使用无线串口服务器
  10. 知网查重提交论文显示服务器错误,职称论文在进行知网查重时,经常出现的错误有哪些?...
  11. SPSS学习资料汇总
  12. 代码远程调用aria2实现URL资源或BT种子下载
  13. 数学建模学习心得--建模教程
  14. java target文件夹_Maven不会创建“/ target / m2e-wtp / web-resources”文件夹
  15. 几个不错的VC编程学习网站
  16. Spring Cloud Ribbon 全解 (1) - 总览篇
  17. Android studio emulator 无法打开的解决办法
  18. Fcoin平台每天赠送了好多币如何处理呢?
  19. 基于wxpy的微信防撤回
  20. “两地分居”的大学师生

热门文章

  1. vue中实现定时器功能
  2. 基于树莓派的宿舍智能空调控制系统
  3. HUAWEI MateBook 16惊喜发布 搭载华为应用市场构建更安全的PC应用生态
  4. 北京石景山中央空调维保,写字楼中央空调维保注意要点
  5. 在Ubuntu20.04上安装Jasper Server7.8.0
  6. 高级的数据分析,长啥样?
  7. Jackson--使用/教程/示例
  8. Android获取虚拟导航键的高度
  9. 下一代 Windows 10X 操作系统要来了!
  10. xadsafe做暗刷_手把手教你如何去掉网吧广告之营销大师_XADSAFE