Java常用日志框架类别

  • JUL(Java Util logging):自 Java1.4 以来官方提供的日志实现。
  • log4j:是基于 Java 开发的日志框架,由Ceki Gülcü设计的开源日志组件,并捐献给了 Apache 软件基金会。
  • log4j2:是 Apache 开发的一款log4j的升级版。
  • logback:同样由Ceki Gülcü设计的开源日志组件。
  • slf4j(Simple Logging Facade for Java):是一套简易 Java 日志门面,本身并无日志的实现,还是由Ceki Gülcü设计实现。
  • JCL(Common Logging):Apache 基金会的项目,是一套 Java 日志接口。
  • jboss-logging:类似slf4j

Springboot 日志配置

maven 引入相关依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId>
</dependency>

其中spring-boot-starter包含了 spring-boot-starter-logging,该依赖就是 Springboot 默认的日志框架 (slf4j + logback)

application.yml中配置

默认情况下,Springboot将日志输出到控制台,不会写到日志文件。如果要输出除控制台之外的日志文件中,则需在application.properties中设置logging.file.namelogging.file.path属性。

logging:pattern:console: "%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n"file:path: ./src/main/resources/loglevel:com.welljoint.LoggerTest: error

application.yml/properties中只能配置简单的场景,日志输出格式、文件保存路径等。而复杂的场景,比如区分Infoerror的日志、每天产生一个日志文件等,只能自定义配置。

自定义配置

官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),但可以通过logging.config属性指定自定义的名称:

logging:config: classpath:logging-config.xml

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的日志都不会输出 -->
<!-- scan:当属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:监测配置文件是否修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds"><!-- 设置上下文名称,用于区分不同应用程序的记录,默认为“default”。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称,一般来说我们不用这个属性,可有可无。 --><contextName>logback</contextName><!-- name值是变量的名称,value是定义变量的值。定义的值会被插入到logger上下文中,通过“${}”来使用变量。 --><property name="log_path" value="D:/logs" /><!-- 彩色日志依赖的渲染类 --><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="${CONSOLE_LOG_PATTERN:-%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{36}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!--1. 输出到控制台--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!-- 控制台输出的日志是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>info</level></filter><encoder><Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!-- 设置字符集 --><charset>UTF-8</charset></encoder></appender><!--2. 日志信息输出到文件中--><!-- 记录 DEBUG 日志,时间滚动输出  --><appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件的路径及文件名 --><file>${log_path}/web_debug.log</file><!-- 如果没有<file>,那么只会使用fileNamePattern的文件路径规则;如果同时有<file>和<fileNamePattern>,那么当天日志是<file>,明天会自动把今天的日志改为当天的日志,即<file>的日志都是当天的。 --><!-- 日志文件的输出格式 --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset> </encoder><!-- 滚动策略,按日期,按文件大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志归档 --><fileNamePattern>${log_path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文档保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录debug级别的日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>debug</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 记录 INFO 日志,时间滚动输出  --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 记录的日志文档的路径及文件名 --><file>${log_path}/web_info.log</file><!--日志文档输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 滚动策略,按日期,按文件大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log_path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文档保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>info</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 记录 WARN 日志,时间滚动输出  --><appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件的路径及文件名 --><file>${log_path}/web_warn.log</file><!--日志文件的输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log_path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文档保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文档只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 记录 ERROR 日志,时间滚动输出  --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log_path}/web_error.log</file><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log_path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文档保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文档只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--<logger>用来设置某一个包或者具体某一个类的日志打印级别、以及指定<appender>。<logger>属性:name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有 INHERITED 或者 同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。addtivity:是否向上级logger传递打印信息。默认是true。--><!--使用mybatis的时候,sql语句是debug级别下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息。第二种就是单独给dao层目录配置成debug级别,这样sql语句会打印,其他还是info级别。--><!--root节点是必选节点,用来指定日志输出级别,只有一个level属性level:用来设置打印或输出日志级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为 INHERITED 或者 同义词 NULL。默认是 DEBUG可以包含零个或多个 appender-ref 元素,属性ref标识appender,将会添加到这个logger。--><root level="info"><appender-ref ref="CONSOLE" /><appender-ref ref="DEBUG_FILE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="WARN_FILE" /><appender-ref ref="ERROR_FILE" /></root><!-- 生产环境:输出到文档<springProfile name="pro"><root level="info"><appender-ref ref="CONSOLE" /><appender-ref ref="DEBUG_FILE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /><appender-ref ref="WARN_FILE" /></root></springProfile> --></configuration>

logback日志配置教程相关推荐

  1. logback日志配置(控制台日志、输出日志、错误日志)

    logback日志配置(控制台日志.输出日志.错误日志) 一.logback.xml相关配置: <?xml version="1.0" encoding="UTF- ...

  2. mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20

    一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...

  3. SpringBoot-Spring profile多环境logback日志配置

    SpringBoot-Spring profile多环境logback日志配置 Spring profile多环境配置 参考 Spring profile是Spring 3引入的概念,主要用在项目多环 ...

  4. spring boot—自定义logback日志配置

    自定义日志配置 spring boot2.2.4官方文档 logback中文文档    1)spring boot可以适应所有日志框架,只需在类路径下包含相应的依赖来激活各种日志系统.    2)sp ...

  5. Logback日志配置和简单使用

    logback加载顺序 我们简单分析一下logback加载过程,当我们使用logback-classic.jar时,应用启动,那么logback会按照如下顺序进行扫描: 在classpath下寻找是否 ...

  6. springboot logback 日志配置。

    下面的引用 SizeAndTimeBasedRollingPolicy  只能是1.2版本以上 ,如果是spring starter 中已经引用了,直接修改日志版本号即可 即在pom中加入: < ...

  7. logback日志配置详解

    一. 近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了 ...

  8. Logback日志配置(分级别输出到不同文件)

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

  9. logback日志配置

    直接复制讲一下好了 比较简单 logback 可以看到执行的sql了 mybatis执行的sql了 <?xml version="1.0" encoding="UT ...

  10. springboot logback 日志配置

    <configuration><!-- %m输出的信息, %p日志级别, %t线程名, %d日期, %c类的全名, %i索引 --><!-- appender是confi ...

最新文章

  1. ---pacman dpkg yum 之比较
  2. ssd2828测试进入测试模式_LOL卡牌推出“远征”轮抽模式 本周再度开启线上测试...
  3. 超详细的Python matplotlib 绘制直方图 赶紧收藏
  4. Python进阶3——列表解析式和生成器表达式
  5. Android中setLayoutParams要用父控件的LayoutParams
  6. 一文搞懂临床研究常见类型
  7. C库宏-offsetof()
  8. 嵌入式C中,全局变量滥用的后果竟如此严重?
  9. 教育部认可公众号博主是自由职业,网友:公号被封算失业吗?
  10. 2021-09-02重排链表
  11. ElasticSearch使用入门及拼音搜索介绍
  12. 手写一个识别旺旺/千牛,手机在线/电脑在线状态的小工具
  13. 芯片设计流程最全讲解
  14. windows server 2012 NIC组合---概念
  15. sqlite只能用于android系统,android SQLite
  16. 如果有一天你退步了,请记住下面5个网站,让你终身受益
  17. HADOOP安装指南-Ubuntu15.10和hadoop2.7.2
  18. 外贸收款方式精辟分析
  19. PCB高速信号布线技巧
  20. Postgresql默认用户名与密码

热门文章

  1. PS-如何用ps软件看psd文件中的字体大小
  2. 微信小程序编辑与显示列表信息
  3. [面经]星环科技大数据后台开发实习面试
  4. dnf体验服显示服务器爆满,DNF:体验服刚更新就爆满,官方临时加频道,100级真那么好玩?...
  5. 制作效果远超CHM的帮助文档制作软件,速看!
  6. BT601/BT709/BT2020 YUV2RGB RGB2YUV 公式
  7. spss之数据处理(离散化)
  8. linux系统有gotoxy函数,linux下有没有类似gotoxy()的函数
  9. html5表格制作教程,html怎么做表格
  10. 读书笔记——《解析卷积神经网络 ——深度学习实践手册(魏秀参)》