Logback自定义日志输出内容
场景
一般情况下,日志打印的内容都是根据配置文件中配置的pattern格式指定好的。在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的pattern格式一致。
例如,在logback.xml配置文件中指定了日志打印格式:
%d{HH:mm:ss.SSS} %-5level [%thread][%logger{0}-%L] %msg%n"。
这些格式的意义在官网的文档上都有说明。其中%msg就是我们调用日志打印方法时输入的内容。
当官方指定的这些格式不能满足我们的需求,或者是我们需要在打印日志的时候,需要加上一些比较有规律的内容,例如打印本机的hostname/ip等logback本身没有提供的格式的时候,我们就可以自定义日志输出的内容与格式。
一、实现自定义Converter
import java.io.PrintWriter;
import java.io.StringWriter;
import com.alibaba.dubbo.rpc.RpcContext;
import com.alibaba.fastjson.JSONObject;
import ch.qos.logback.classic.pattern.MessageConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
public class LogMessageConverter extends MessageConverter{
@Override
public String convert(ILoggingEvent event){
//可以在里面增加其他处理,此处return的字符串就是日志输出的最终内容
return super.convert(event);
}
|
创建一个类LogMessageConverter继承MessageConverter,MessageConverter中就只有一个方法convert,代码如下:
package ch.qos.logback.classic.pattern;
import ch.qos.logback.classic.spi.ILoggingEvent;
/**
* Return the event's formatted message.
*
* @author Ceki Gülcü
*/
public class MessageConverter extends ClassicConverter {
public String convert(ILoggingEvent event) {
return event.getFormattedMessage();
}
}
这个类的作用在它的注释中解释了:返回格式化之后的message。它继承ClassicConverter,而ClassicConverter是所有Converter的父类。因此,如果我们需要在原有日志打印内容的基础上加上一些内容,就可以在自定义Converter中的convert中实现自己的逻辑处理即可。
二、修改配置文件
完成了自定义的Converter之后,就是将这个Converter配置到配置文件中。在logback配置文件中的根节点<configuration>下增加节点<conversionRule>,例如:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="msg" converterClass="com.xxx.xxx.log.LogMessageConverter" />
//....
</configuration>
在<conversionRule>节点中的conversionWord="msg"属性,就是表示在pattern中指定%msg时,调用的就是converterClass属性中指定的Converter
Logback自定义日志输出内容的更多相关文章
- HAproxy增加日志记录功能和自定义日志输出内容、格式
http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能 1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...
- 《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar.log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的 ...
- Java自定义日志输出文件
Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...
- springboot(二).springboot整合logback用于日志输出
springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...
- 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...
- 《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
1.简介 为了方便查看和归档:(1)不同包的日志可能要放到不同的文件中,如service层和dao层的日志:(2)不同日志级别:调试.信息.警告和错误等也要分文件输出.所以宏哥今天主要介绍和分享的是: ...
- Hadoop案例(五)过滤日志及自定义日志输出路径(自定义OutputFormat)
过滤日志及自定义日志输出路径(自定义OutputFormat) 1.需求分析 过滤输入的log日志中是否包含xyg (1)包含xyg的网站输出到e:/xyg.log (2)不包含xyg的网站输出到e: ...
- logback配置日志输出
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...
- Logback自定义日志颜色
片段 1 片段 2 LogbackColorful.java package cn.mrxionge.netdemo; import ch.qos.logback.classic.Level; imp ...
随机推荐
- linux 抓包 tcpdump 简单应用
在linuxserver上,常常要定位网络问题,就须要用到抓包. 比如:tcpdump -X -s 0 host 10.17.81.22 and port 9999 -w /home/text.cap ...
- Vue小技巧,如何导入普通JS文件
最近在开发一个展示3D模型的WEB程序,在工程中使用了VUE和ThreeJS库.Three.js本身是支持CommonJS的,但我们还用到了OBJLoader模块,此模块不支持CommonJS,改成C ...
- MongoDB Shell (mongo)
https://docs.mongodb.com/getting-started/shell/client/ The mongo shell is an interactive JavaScript ...
- 使用isolation forest进行dns网络流量异常检测
代码如下,测试发现,是否对输入数据进行归一化/标准化对于结果没有影响: import numpy as np from sklearn.ensemble import IsolationForest ...
- 网络通信-ping命令
- 从Chrome源码看audio/video流媒体实现一(转)
现在绝大多数的网站已经从flash播放器转向了浏览器原生的audio/video播放器,浏览器是如何加载和解析多媒体资源的,这对于web开发者来说是一个黑盒,所以很有必要看一下浏览器是怎么实现的,Ch ...
- [NOIP2016普及组]魔法阵
题目:洛谷P2119.Vijos P2012.codevs5624. 题目大意:有n件物品,每件物品有个魔法值.要求组成魔法阵(Xa,Xb,Xc,Xd),该魔法阵要满足Xa<Xb<Xc&l ...
- caioj 1070 动态规划入门(二维一边推3:字符距离)(最长公共子序列拓展)
复制上一题总结 caioj 1069到1071 都是最长公共字序列的拓展,我总结出了一个模型,屡试不爽 (1) 字符串下标从1开始,因为0用来表示字符为空的情况,而不是第一个字符 (2) ...
- linu基础入门(一)
原创作品,允许转载,转载时请务必声明作者信息和本声明. https://www.cnblogs.com/zhu520/p/10730550.html 本人小白,有错指出.谢谢! 一:根据上一步安装与新 ...
- 使用ThoughtWorks.QRCode生成二维码
新建Windows应用程序,加入引用ThoughtWorks.QRCode.dll,编写代码生成二维码. using System; using System.Drawing; using Syste ...