日志配置log4j 打印线程号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# Set root logger level to WARN and append to stdout log4j.rootLogger=INFO,stdout,R,R1 #日志文件输出目标,控制台/文件 #日志输出方式:控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=com.youcompan.project.log4j.Log4jExPatternLayout log4j.appender.stdout.layout.ConversionPattern=[xxxx] %d %5p %T (%c.%M:%L) - %m%n
#应用服务器日志目录 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=${catalina.home}/logs/ydbudget.log log4j.appender.R.DatePattern = '.'yyyy-MM-dd'.log' #log4j.appender.R.MaxFileSize=500KB log4j.appender.R.layout=com.youcompan.project.log4j.Log4jExPatternLayout log4j.appender.R.layout.ConversionPattern=[xxxx]%d%5p %T (%C.%M:%L) - %m%n log4j.appender.R.Append=true #应用根目录 log4j.appender.R1=org.apache.log4j.DailyRollingFileAppender log4j.appender.R1.File=${webApp.root}logs/ydbudget.log log4j.appender.R1.DatePattern = '.'yyyy-MM-dd'.log' #log4j.appender.R1.MaxFileSize=500KB log4j.appender.R1.layout=com.youcompan.project.log4j.Log4jExPatternLayout log4j.appender.R1.layout.ConversionPattern=[xxxx]%d%5p %T (%C.%M:%L) - %m%n log4j.appender.R1.Append=true |
输出三个地方 配置基本一致, 当然相对路径不同,按日滚动吧
其中应用服务器 中${catalina.home}是tomcat系的自带系统变量 ,无需其他配置
而应用根目录中的${webApp.root} 是在web.xml中通过spring定义的
1
2
3
4
5
6
7
8
9
10
11
|
< context-param > < param-name >webAppRootKey</ param-name > < param-value >webApp.root</ param-value > </ context-param > < context-param > < param-name >log4jConfigLocation</ param-name > < param-value >classpath:log4j.properties</ param-value > </ context-param > < listener > < listener-class >org.springframework.web.util.Log4jConfigListener</ listener-class > </ listener > |
现在来看布局类的定义和pattern的配置,
Log4jExPatternLayout 这个类是继承自 org.apache.log4j.PatternLayout ,其主要功能就是为了让 pattern 中的 %T 显示 线程号,上代码,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Log4jExPatternLayout extends PatternLayout { public Log4jExPatternLayout(String pattern){ super (pattern); } public Log4jExPatternLayout(){ super (); } /** * 重写createPatternParser方法,返回PatternParser的子类 */ @Override protected PatternParser createPatternParser(String pattern) { return new Log4jExPatternParser(pattern); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class Log4jExPatternParser extends PatternParser { public Log4jExPatternParser(String pattern) { super (pattern); } /** * 重写finalizeConverter,对特定的占位符进行处理,T表示线程ID占位符 */ @Override protected void finalizeConverter( char c) { if (c == 'T' ) { this .addConverter( new ExPatternConverter( this .formattingInfo)); } else { super .finalizeConverter(c); } } private static class ExPatternConverter extends PatternConverter { public ExPatternConverter(FormattingInfo fi) { super (fi); } /** * 当需要显示线程ID的时候,返回当前调用线程的ID */ @Override protected String convert(LoggingEvent event) { return String.valueOf(Thread.currentThread().getId()); } } } |
参考文档忘记了,这篇文章是后来整理的,感谢他们吧
日志配置log4j 打印线程号的更多相关文章
- springboot添加log4j日志配置log4j.xml生成日志文件
第一步:添加pom文件依赖 <!-- log4j --> <dependency> <groupId>org.springframework.boot</gr ...
- 日志配置logback
在选择项目日志框架时,发现log4j的作者开发了新的日志框架,据说性能提高不少,那就选它了,不过,除了配置上有点不习惯外,最重要的一点 ,打印线程号这个功能依然没有(打印线程名这个东西是在是个鸡肋). ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- (转)Log4J日志配置详解
http://www.cnblogs.com/ITtangtang/p/3926665.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源 ...
- java Log4j日志配置详解大全
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- Log4J日志配置详解[转]
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Log4J日志配置与Juit测试
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器).Appenders(输出源)和Layouts(布局). 这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
随机推荐
- 【Android】Sqlite3命令详解
Sqlite3常用命令 Sqlite3命令有"."符合作为前缀. 基本操作 1.创建或者打开数据库 sqlite3 xxx.db 如果xxx.db存在则打开如果没有则新建此时执行创 ...
- Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
问题:Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin. 原因:.js文件中使用load()方法,而Chrom ...
- C# 制作卸载文件
1.建一个控制台应用程序Uninstall: 2.在应用程序的mian方法中添加 static void Main(string[] args) { System.Diagnostics.Proces ...
- 《Excel图表之道》读书笔记
一.突破常规的作图方法 突破Excel的默认颜色 非数据元素用淡色 突破Excel的图表布局 图表要素:主标题.副标题.图例.绘图.脚注 竖向构图 标明数据来源.图表注释.坐标轴截断符号 专业的水蓝色 ...
- sublimeformaya
网上没有找到这样的插件自己造了一个 https://github.com/jonntd/connectionmaya 附件列表
- Navigation学习笔记
***************************** 使用storyboard导航********************************* storyboard方式相对简单. 在弹出来 ...
- u-boot代码学习内容
前言 u-boot代码庞大,不可能全部细读,只能有选择的读部分代码.在读代码之前,根据韦东山教材,关于代码学习内容和深度做以下预先划定. 一.Makefile.mkconfig.config.mk等 ...
- 黑马程序员-------.net基础知识五
方法(函数) 作用:用来重复代码,当我们在一个过程中反复的写了同样的代码,一般情况下,我们就可以把需要重复写的代码定义在方法中,用的时候只需调用即可 语法: [访问修饰符][static] 返回值类型 ...
- 当今app行业 比较流行的 简称 汇总
B=Business,即企业:C=Customers,即消费者,这样就好理解这些简称了:M=Medium,即媒介B2B:(Business To Business)商家对商家进行交易 如:阿里巴巴.生 ...
- 破解EXCEL2007的密码
破解EXCEL2007的密码 xshzhao (斑竹)顶楼举报 我有一个EXCEL2007文件(后缀是XLSX),由于设置了打开密码.现在密码搞忘了,这个文件对我很重要. 我试过了Office Pas ...