Log4j的ConversionPattern无缝适配到Logback
为了能将log4j的ConversionPattern无缝应用到logback上来,需要对两个Conversion做适配,具体可以参考:Log4j 与 Logback的ConversionPattern对比
ch.qos.logback.classic.PatternLayout
static代码块新增:
// adapter for log4j
defaultConverterMap.put("l", LocationConverter.class.getName());
defaultConverterMap.put("x", NDCConverter.class.getName());
其中:
public class LocationConverter extends ClassicConverter {
@Override
public String convert(ILoggingEvent le) {
StringBuilder buf = new StringBuilder();
StackTraceElement[] cda = le.getCallerData();
if (cda != null && cda.length > 0) {
buf.append(cda[0]);
return buf.toString();
} else {
return CallerData.CALLER_DATA_NA;
}
}
}
public class NDCConverter extends ClassicConverter {
@Override
public String convert(ILoggingEvent event) {
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
return outputMDCForAllKeys(mdcPropertyMap);
}
private String outputMDCForAllKeys(Map<String, String> mdcPropertyMap) {
StringBuilder buf = new StringBuilder();
Map<Integer, String> ndcMap = new HashMap<Integer, String>();
for (Map.Entry<String, String> entry : mdcPropertyMap.entrySet()) {
if (entry.getKey().startsWith("NDC") && entry.getKey().length() > 3) {
String index = entry.getKey().substring(3);
try {
int idx = Integer.parseInt(index);
ndcMap.put(idx, entry.getValue());
} catch (Exception e) {
// ignore
}
}
}
boolean first = true;
for (int i = 0; i < ndcMap.size(); i++) {
if (first) {
first = false;
} else {
buf.append(" ");
}
buf.append(ndcMap.get(i));
}
return buf.toString();
}
}
NDCConverter只是兼容了输出,因为在logback里,NDC是通过MDC来实现的,其key为NDC + index(from 0),因此可以通过key来实现顺序输出,但是这个是基于用户的 MDC 不能以 "NDC"开头,再加上数字来命令,否则NDC的输出会出现MDC的内容;
Log4j的ConversionPattern无缝适配到Logback的更多相关文章
- 从log4j日志无缝迁移至logback
ogback对比log4j的有点在此就不赘述了. 由于在项目的原有代码中,大量的日志生成是通过log4j实现的,新的代码希望通过logback的方式生成日志,同时希望将老的代码在不修改的情况下直接将日 ...
- Log4j的ConversionPattern参数的格式含义
Log4j建议只使用四个级别,优先级从高到低分别是ERROR.WARN.INFO.DEBUG#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!log4j.rootL ...
- log4j的ConversionPattern参数的格式含义-转
转自:http://www.blogjava.net/wilesun/archive/2007/10/30/156999.html Log4j建议只使用四个级别,优先级从高到低分别是ERROR.WAR ...
- Log4j中conversionPattern的含义
%a -- 表示礼拜几,英文缩写形式,比如“Fri”%A -- 表示礼拜几,比如“Friday”%b -- 表示几月份,英文缩写形式,比如“Oct”%B -- 表示几月份,“October”%c -- ...
- Log4j 与 Logback的ConversionPattern对比
为了能将log4j的配置无缝转到logback,需要了解其中ConversionPattern的差异,以下是对比表格,内容来自: log4j官网 logback官网 其中可能需要转换的地方主要有两块: ...
- log4j+logback+slf4j+commons-logging的关系与调试
背景 由于现在开源框架日益丰富,好多开源框架使用的日志组件不尽相同.存在着在一个项目中,不同的版本,不同的框架共存.导致日志输出异常混乱.虽然也不至于对系统造成致命伤害,但是明显可以看出,架构 ...
- Log4j,Log4j2,logback,slf4j日志学习
日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条 ...
- Log4j,Log4j2,logback,slf4j日志学习(转)
日志学习笔记Log4jLog4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志 ...
- java日志组件介绍(common-logging,log4j,slf4j,logback )
转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...
随机推荐
- Rust的几个预测
写程序多年,语言也用过不下十种,对于Rust有种亲人的感觉,就像在梦中见到过似的.现在对于Rust特做出以下一些预测,希望Rust会有更大的影响力. 1. 当前的Rust的核心功能现以比较稳定,可以用 ...
- Java 对文件的读取操作
package pack; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- R随笔(2)
1,查看R中的变量模式(对象的数据类型)mode() 2,因子(factor), table()可以获取多个因子的交叉表,可以知道每个因子出现的次数 > g<-c("f&quo ...
- 关于js原型继承
js的每个类都有一个prototype对象 访问对象的属性时,会先访问到对象自身是否有定义这个属性 如果没有定义,就会去访问对象所属类型的prototype对象是否有此属性 原型继承就是把类型的pro ...
- Linux下安装php加速软件Xcache
Nginx网站根目录:/usr/share/nginx/html 1.安装xcache cd /usr/local/src #进入软件包存放目录 wget http://xcache.lighttpd ...
- 利用命令行将项目传到github上的简单操作
(1)安装git后,打开cmd,进入要上传的文件夹中: (2)输入git init初始化本地git仓库: (3)git add .将所有文件提交到暂存区: (4)git commit -m'说明文字' ...
- Java(异常处理)动手动脑
1>请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutEx ...
- (转)jquery easyui treegrid使用小结 (主要讲的是如何编辑easyui中的行信息包括添加 下拉列表等)
在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列 ...
- Linux下NFS服务器的搭建与配置
一.NFS服务简介 NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的. 它最大的功能就是可以透过网络,让不同的机器.不同的操作系统.可以彼此分享个别 ...
- sql 将8位字符串转换成日期型
将8位字符串转换成日期型,方法如下: ),)