spring logback mysql_logback 日志输出格式
![](http://img-03.proxy.5ce.com/view/image?&type=2&guid=1e0a4d3f-272f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-7e43b5a4e6bd986bd4b42ba26d33b2e7_1440w.jpg?source=172ae18b)
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
【前言】
日志对一个系统的重要性不言而喻;日志通常是在排查问题时给人看,一个友好的输出样式让人看到后赏心悦目,排查效率通常也会随之提高;下面为大家共享一下通过设置logback日志输出格式,打印出令人欣喜的日志样式。
【搞一下日志格式】
一、未指定日志格式,日志输出
1、代码实现
(1)演示日志输出控制器
/*
2、项目部署服务器后访问打印日志的效果
![](http://img-02.proxy.5ce.com/view/image?&type=2&guid=1e0a4d3f-272f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-b3d377090260f5aa7b9927542c3a6298_b.png)
二、指定日志格式,日志输出
1、代码实现
(1)演示日志输出控制器(同上)
(2)在项目的resources目录下增加logback.xml设置打印格式,logback.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 说明: 1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中 例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志,日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名 例如log-level-2013-12-21.0.log其它级别的日志也是如此。 2、文件路径 若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。若部署到Tomcat下,则在Tomcat下的logs文件中 3、Appender FILEERROR对应error级别,文件名以log-error-xxx.log形式命名FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名 FILEINFO对应info级别,文件名以log-info-xxx.log形式命名FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名 stdout将日志信息输出到控制上,为方便开发测试使用 -->
<configuration><springProperty scope="context" name="LOG_HOME" source="spring.application.name"/><springProfile name="local"><property name="LOG_PATH" value="D:/www/logs/common"/> <!-- 日志保存目录 --></springProfile><springProfile name="dev"><property name="LOG_PATH" value="/data/logs/common" /> <!-- 日志保存目录 --></springProfile><property name="appName" value="common"/><property name="maxSaveDays" value="365"/><!-- 日志最大保存天数 --><property name="maxFileSize" value="200MB"/><!-- 单个文件最大大小 --><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) %green([${LOG_HOME},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]) %magenta(${PID:-}) %white(---) %-20(%yellow([%20.20thread])) %-55(%cyan(%.32logger{30}:%L)) %highlight(- %msg%n)</pattern><charset>UTF-8</charset></encoder></appender><appender name="rollingFileConsole" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${appName}-log-console-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><maxHistory>${maxSaveDays}</maxHistory> <!--max save days --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>${maxFileSize}</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) %green([${LOG_HOME},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]) %magenta(${PID:-}) %white(---) %-20(%yellow([%20.20thread])) %-55(%cyan(%.32logger{30}:%L)) %highlight(- %msg%n)</pattern><charset>UTF-8</charset></encoder></appender><appender name="rollingFileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${appName}-log-info-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><maxHistory>${maxSaveDays}</maxHistory> <!--max save days --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>${maxFileSize}</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS"}[%X{userId}|%X{sessionId}][%p][%c{0}-%M]-%m%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>DENY</onMatch><onMismatch>ACCEPT</onMismatch></filter></appender><appender name="rollingFileError" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${appName}-log-error-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><maxHistory>${maxSaveDays}</maxHistory> <!--max save days --><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>${maxFileSize}</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS"}[%X{userId}|%X{sessionId}][%p][%c{0}-%M]-%m%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender> <!-- 为单独的包配置日志级别,若root的级别大于此级别, 此处级别也会输出 应用场景:生产环境一般不会将日志级别设置为trace或debug,但是为详细的记录SQL语句的情况,可将hibernate的级别设置为debug,如此一来,日志文件中就会出现hibernate的debug级别日志, 而其它包则会按root的级别输出日志 --><!-- <logger name="org.springframework" level="DEBUG" /> --><logger name="com.ibatis" level="DEBUG"/><logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG"/><logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG"/><logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"level="INFO"/><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/><logger name="com.netflix.discovery" additivity="true" level="ERROR"/><!-- 生产环境,将此级别配置为适合的级别,以名日志文件太多或影响程序性能 --><root level="INFO"><appender-ref ref="rollingFileConsole"/><appender-ref ref="rollingFileInfo"/><appender-ref ref="rollingFileError"/><appender-ref ref="stdout"/></root>
</configuration>
3、项目部署服务器后访问打印日志的效果
![](http://img-03.proxy.5ce.com/view/image?&type=2&guid=1e0a4d3f-272f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-68e1f28b28462df9a467dfc8afd98191_b.jpg)
4、查看日志记录文件,效果也一样,效果图:
![](http://img-02.proxy.5ce.com/view/image?&type=2&guid=1e0a4d3f-272f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-264d65b3509444d3349aea72f22d9d29_b.jpg)
三、项目地址
1、地址:https://github.com/dangnianchuntian/springboot
2、代码版本:1.5.0-Release
【总结】
1、通过设定日志格式,输出的样式更加人性化,错误也更加明显;
2、这个小小的改变,使得在排查程序时更加的赏心悦目,心情上的开心将在无形中增加排错的效率;
spring logback mysql_logback 日志输出格式相关推荐
- logback 日志输出格式
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 日志对一个系统的重要性不言而喻:日志通常是在排查问题时给人看,一个友好的输出样式让人看 ...
- 【spring boot】8.spring boot的日志框架logback使用
在继续上一篇的Debug调试之后,把spring boot的日志框架使用情况逐步蚕食. 参考:http://tengj.top/2017/04/05/springbo 开篇之前,贴上完整applica ...
- Spring Boot 使用 Log4j2 Logback 输出日志到 EKL
文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...
- spring boot日志框架体系剖析(默认采用logback作为日志框架)
一定要排除依赖,才能使用中间转换包,要不然就会出现依赖冲突: spring boot对日志输出级别等作出了默认配置: 替换springboot默认的配置: 切换到log4j: pom依赖排除: l ...
- qt能使用logback_Spring boot使用logback实现日志配置
欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 目录 前言 常用日志组件 什么是日志门面和日志实现 常见的日志框架 日志使用 @slf4j注解 日志的配置 logback-spring配置 ...
- Spring boot指定日志配置
指定日志配置 给类路径下,放上每个日志框架,自己的配置文件即可 SpringBoot就不使用,默认配置的了 Spring文件名区别 logback.xml 直接就被日志框架识别了 logback-sp ...
- SpringBoot 项目使用 SLF4J+logback 进行日志记录,来增强可维护性
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:云深不知处 blog. ...
- Spring Boot + Log4j2 日志框架配置 (Maven)
参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志 , 还包括适当的Logback路由, 确保其 ...
- java lombok logback 配置日志打印
一.maven 引入 <dependency><groupId>org.projectlombok</groupId><artifactId>lombo ...
最新文章
- 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛细则
- SSH配置优化和慢的解决方法
- VTK:可视化算法之TensorAxes
- spring mvc绑定对象String转Date解决入参不能是Date的问题
- D - ABC Conjecture Gym - 102798D
- Spring中的Aop底层原理
- 物流软件之Microcity介绍
- vista中如何解决金山词霸延时问题
- 如何在一台电脑上安装2个以上JDK
- 计算机验证iq oq pq,验证、确认、鉴定过程、DQ、IQ、OQ、PQ这几个概念如何理解?...
- form表单提交中的input,button,submit
- html设计方案,网页设计经典方案
- uni-app h5 上传图片 压缩图片
- 布尔运算(Boolean Operators)
- java ckfinder中文_CKfinder中文乱码的解决.
- 苹果查看电池实际容量
- 马云谈年轻人压力大:年轻人怕压力就白活了
- 吉林大学计算机研究生成绩计算方法,关于同济大学研究生成绩计算方法的说明...
- 关于码距、检错、纠错
- PaddleHub一键识别动物 : resnet50_vd_animals
热门文章
- python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...
- golang mysql proxy_mixer: 一个用go实现的mysql proxy
- 安卓手机如何投屏到电视上_手机如何投屏到电视机上?
- 推荐一套开源通用后台管理系统(附源码)
- 深入理解Java虚拟机(第三弹)- JVM 内存分配与回收策略原理,从此告别 JVM 内存分配文盲
- java基础(二) 自增自减与贪心规则
- 插入排序算法 及其二分搜索优化版 C++代码实现 恋上数据结构笔记
- Junit单元测试遇到的initializationerror:method initializationerror not found
- (JAVA学习笔记) 关于i++和++i的区别
- 手动创建1个基于xml配置的springmvc 项目(without Maven)