log4j教程 10、PatternLayout
如果想生成基于模式的特定格式的日志信息,那么可以使用 org.apache.log4j.PatternLayout 格式化日志信息。
PatternLayout类扩展抽象 org.apache.log4j.Layout 类并覆盖format()方法根据提供的模式构建日志信息。
PatternLayout也是一个简单的布局对象,它提供下列Bean属性,可以通过配置文件进行设置:
| S.N. | 属性和说明 |
|---|---|
| 1 | conversionPattern 设置转换模式。默认为 %r [%t] %p %c %x - %m%n |
模式转换字符:
下表说明了以上模式使用的字符和所有其他字符,可以在自定义模式中使用:
| 转换字符 | 表示的意思 |
|---|---|
| c | 用于输出的记录事件的类别。例如,对于类别名称"a.b.c" 模式 %c{2} 会输出 "b.c" |
| C | 用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名 "org.apache.xyz.SomeClass", 模式 %C{1} 会输出 "SomeClass". |
| d | 用于输出的记录事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}. |
| F | 用于输出被发出日志记录请求,其中的文件名 |
| l | 用于将产生的日志事件调用者输出位置信息 |
| L | 用于输出从被发出日志记录请求的行号 |
| m | 用于输出使用日志事件相关联的应用程序提供的消息 |
| M | 用于输出发出日志请求所在的方法名称 |
| n | 输出平台相关的行分隔符或文字 |
| p | 用于输出的记录事件的优先级 |
| r | 用于输出毫秒从布局的结构经过直到创建日志记录事件的数目 |
| t | 用于输出生成的日志记录事件的线程的名称 |
| x | 用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文) |
| X | 在X转换字符后面是键为的MDC。例如 X{clientIP} 将打印存储在MDC对键clientIP的信息 |
| % | 文字百分号 %%将打印%标志 |
格式修饰符:
默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。
下表涵盖了各种各样的修饰符的情况:
| Format modifier | left justify | minimum width | maximum width | 注释 |
|---|---|---|---|---|
| %20c | false | 20 | none | 用空格左垫,如果类别名称少于20个字符长 |
| %-20c | true | 20 | none | 用空格右垫,如果类别名称少于20个字符长 |
| %.30c | NA | none | 30 | 从开始截断,如果类别名称超过30个字符长 |
| %20.30c | false | 20 | 30 | 用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。 |
| %-20.30c | true | 20 | 30 | 用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。 |
PatternLayout 示例:
以下是针对 PatternLayout 一个简单的配置文件:
# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE # Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out # Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=
%d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n
现在考虑下面产生日志信息的Java例子:
import org.apache.log4j.Logger; import java.io.*;
import java.sql.SQLException;
import java.util.*; public class log4jExample{
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(
log4jExample.class.getName()); public static void main(String[] args)
throws IOException,SQLException{ log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
编译并运行上述程序,它会创建 log.out文件在 /usr/home/log4j 目录,该文件将有如下的日志信息:
2010-03-23-main--DEBUG-log4jExample:Hello this is an debug message
2010-03-23-main--INFO -log4jExample:Hello this is an info message
log4j教程 10、PatternLayout的更多相关文章
- Log4j教程
Log4j教程 一.快速上手 log4j把日志分为:all,trace,debug,info,warnig,error,fital,off等几个级别.级别高的会屏蔽级别的的信息. 1)maven导入j ...
- log4j教程 8、日志格式化
Apache log4j 提供了各种布局对象,每一个对象都可以根据各种布局格式记录数据.另外,也可以创建一个布局对象格式化测井数据中的特定应用的方法. 所有的布局对象 - Appender对象收到 L ...
- node-webkit教程(10)Platform Service之File dialogs
node-webkit教程(10)Platform Service之File dialogs 文/玄魂 目录 node-webkit教程(10)Platform Service之File dialog ...
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...
- Linux pwn入门教程(10)——针对函数重定位流程的几种攻击
作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...
- [译]Vulkan教程(10)交换链
[译]Vulkan教程(10)交换链 Vulkan does not have the concept of a "default framebuffer", hence it r ...
- 黑马lavarel教程---10、lavarel模型关联
黑马lavarel教程---10.lavarel模型关联 一.总结 一句话总结: 1.模型关联比较方便,一次定义,后面都可以使用 2.关联关系 使用动态属性进行调用 1.一对多,多对多实例? 一对多: ...
- Directx11教程(10) 画一个简易坐标轴
原文:Directx11教程(10) 画一个简易坐标轴 本篇教程中,我们将在三维场景中,画一个简易的坐标轴,分别用红.绿.蓝三种颜色表示x,y,z轴的正向坐标轴. 为此,我们要先建立一个A ...
- 深度学习与CV教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- linux下源代码分析和阅读工具比较
Windows下的源码阅读工具Souce Insight凭借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”.Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代, ...
- uoj228:基础数据结构练习题
题意:http://uoj.ac/problem/228 sol :线段树开根操作 对于节点x,可以在max[x]-min[x]<=1时直接做,转化为区间减或区间覆盖 #include< ...
- 《c程序设计语言》读书笔记-5.4-指针实现strend
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> ...
- css垂直居中的几种方式
1. 对于可以一行处理的 设置 height:apx; line-height:apx; 2.对于一段文字(会多行显示的) ->2.1如果是可以设置一个固定高度的 ...
- Linux Mint---fcitx中文,日语输入法
安装中文输入法,我这边选了小企鹅,先前用过scim,稍微比较了下,效果还是这个好 安装可一步即可搞定 apt-get install fcitx fcitx-table-wubi-large fcit ...
- SQLite 字段数据类型
一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断. SQLite具有以下五种数据类型: 1.NULL:空值. 2.INTEGER:带符号的整型,具体取决有存入 ...
- UVA 10330 Power Transmission
题意:懒得打了.LUCKY CAT 里有 http://163.32.78.26/homework/q10330.htm 第一个网络流题目.每个节点都有一个容量值.需要拆点.拆成i - > i ...
- UVA 10229 Modular Fibonacci
斐波那契取MOD.利用矩阵快速幂取模 http://www.cnblogs.com/Commence/p/3976132.html 代码: #include <map> #include ...
- Linux中tty框架与uart框架之间的调用关系剖析【转】
转自:http://developer.51cto.com/art/201209/357501.htm 之前本人在"从串口驱动的移植看linux2.6内核中的驱动模型 platform de ...
- zabbix报警邮件qq邮箱收不到的问题
出现这样问题的根本原因是因为zabbix对中文支持不太友好,乱码导致了邮件无法正常接收. 一.解决zabbix邮件内容为附件 1.安装发送邮件的mailx 以及windows文件转unix文件的命令 ...