抽象类Layout
public abstract class Layout implements OptionHandler {
// Derived classes need to implement their own formatting strategy.
abstract public String format(LoggingEvent event);
public String getContentType() { return "text/plain"; }
public String getHeader() { return null; }
public String getFooter() { return null; }
abstract public boolean ignoresThrowable();
}
PatternLayout
它和C语言的printf方法非常类似。格式转换由普通字符和转换字符组合而成。转换字符由%开始,紧跟着的是可选的格式修饰符和转换字符标示。使用%前缀的表示符号将被转换到实际的内容。如name, level, date, thread name.
例子
/**
*
* @author liyixing liyixing1@yahoo.com.cn
* @version 1.0
* @since 2011-7-10 下午11:16:54
*/
package com.cgodo.log4j.test;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
/**
*
* @author liyixing liyixing1@yahoo.com.cn
* @version 1.0
* @since 2011-7-10 下午11:16:54
*/
public class LayoutTest {
/**
* 描述:
*
* @param args
* @author liyixing 2011-7-10
*/
public static void main(String[] args) {
Logger rootLogger = Logger.getRootLogger();
PatternLayout layout = new PatternLayout("%-5p [%t]: %m%n");
ConsoleAppender appender = new ConsoleAppender(layout);
rootLogger.addAppender(appender);
rootLogger.setLevel(Level.DEBUG);
rootLogger.debug("Message 1");
rootLogger.warn("Message 2");
}
}
在上面的格式%-5p [%t]: %m%n中,并没有明确的分隔转换字符和普通文本的字符存在。PatternLayout能自己区分普通文本和转换字符。其中%-5p是日志的调用级别。事件是左对齐的,5个字符宽度。
可用的转换符是
转换符 | 描述 |
c | 调用日志事件的所在记录器的名字,如一个logger的名字是my.test.bbb.ccc,调用的是WARN级别的日志输出,那么输出的是输出my.test.bbb.ccc,可以在其右边指定了精度,如%c{2}那么输出的是bbb.ccc |
C | 调用日志事件的所在的类名,如我在com.cgodo.log4j.test.LayoutTest类中调用,输出的是com.cgodo.log4j.test.LayoutTest,和c转换符一样,可以在右边指定宽度,如%C{2}输出%C{2} |
d | 日志调用所发生的时间,日期格式在其后跟着的大括号内的格式指定如%d{yyyy-MM-dd HH:mm:ss},我现在输出的结果是2011-07-11 21:05:22,推荐使用的是log4j本身提供的日期格式,如%d{ISO8601},%d{ABSOLUTE},%d{DATE} |
F | 所处所在文件名,如上面说C转换符的例子,输出结果是LayoutTest.java |
l | 是的日志事件发生的位置信息,这个和虚拟机的实现有点关系,一般境况下能得到类,方法,行数源文件等信息,如我在com.cgodo.log4j.test.LayoutTest中的输出结果就是com.cgodo.log4j.test.LayoutTest.main(LayoutTest.java:38),为了输出这个信息,会比较影响性能。 |
L | 只是输出触发日志事件代码所在的行号,性能损耗会小很多。 |
m | 显示应用给日志提供的其他信息,如消息。rootLogger.warn("Message 2");那么%m将得到的是Message 2 |
M | 输出调用者所在的方法名 |
n | 换行,和\r \r\n有相同功能,能识别系统的换行符,自动转换成\r或者\r\n,log4j推荐使用这个转换符,而不是\r或者\r\n |
p | 输出调用的日志的级别,如我是调用logger.debug方法,那么级别就是debug |
r | 输出自应用启动后第一次调用logger的日志输出方法,到输出该log信息耗费的毫秒数 |
t | 输出所在线程的名字 |
x | 暂时不知道,Outputs the NDC (nested diagnostic context) associated with thethread that generated the logging event. The NDC will be discussedin Chapter 7. |
X | Outputs the MDC (mapped diagnostic context) associated with thethread that generated the logging event. The X conversion charactermust be followed by a key placed between braces, as in%X{clientNumber} where clientNumber is the key. The correspondingvalue in the MDC will be output. The MDC will be discussedin Chapter 7. |
% | 写上%%后将直接输出一个%符号 |
关于C, F, l, L, and M几个的使用,会影响到性能,没必要过于使用。
格式修饰符
放在%和转换符之间。
第一个可选的格式修饰符是左对齐(-)。
第二个可选的格式修饰符是字段最小宽度。一个整数。表示输出的最小字符数。如果数据未达到指定最小大小,那么它将以左填充(默认)或者右填充方式(左对齐情况下只能使用右填充了)。用空格填充,直到达到最小宽度。如果大于指定最小宽度,不会被截断
当然可以指定最大字符数,使用.符号加数字表示最大字符数。如果大于指定长度,多余的字符会被删除。它是从前面删除,而不是从后面删除的。如最大字符是8个,数据有10个字符,那么前面两个字符会被删除。
%20c 右对齐,最少20字符,没有左边用空格填充
%-20c 左对齐,最少20字符,没有右边用空格填充
%.30c 右对齐,最多30字符,超过左边的截取掉
%20.30c 右对齐,最少20字符,最多30字符,填充或截取规则略
%-20.30c 左对齐,最少20字符,最多30字符,填充或截取规则略
XMLLayout
以XML方式进行布局,详情看log4j manual
HTMLLayout
以HTML方式进行布局.
以固定格式表格输出事件。表格包含事件,事件,等级,logger和消息。
属性
LocationInfo boolean true则输出日志发生的位置信息,如果打开会多出一列File:Line。默认false。
Title String html文件的标题。
分享到:
相关推荐
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...
《layout.js布局插件:网页快速布局的利器》 在网页设计与开发中,布局是至关重要的一步,它直接影响到用户的浏览体验和信息传递的效率。layout.js布局插件应运而生,专为实现网页的高效、灵活布局提供了解决方案。...
Layoutit BootStrap3是基于此框架的一个在线布局工具,它提供了一个直观的拖拽界面,帮助开发者无需编写代码就能设计出复杂的Bootstrap页面布局。 Bootstrap3的核心组件包括网格系统、表单、按钮、导航、下拉菜单、...
为了充分利用USB3.0的高速传输性能,硬件设计至关重要,因此本文将详细介绍USB3.0 Layout设计的关键要点。 首先,USB3.0 Layout设计中需要考虑到电源系统的设计。USB3.0设备的电源设计要求具有良好的去耦设计,以...
HFSS 3D Layout是一款由ANSYS公司推出的三维电磁场仿真软件,特别针对印刷电路板(PCB)和封装仿真设计。该软件继承了HFSS的有限元仿真算法内核,提供了一个以EDA风格设计的界面和仿真流程,以便于PCB和封装领域的...
根据提供的文件信息,我们来详细探讨音频Layout设计规范,这个规范主要涉及音频原理图、元器件布局以及PCB走线三个方面。这些内容是音频设计中的核心,每一个环节都对最终的音频质量有着直接的影响。 首先,音频...
《Sprint-Layout60:高效布局解决方案》 在软件开发过程中,界面设计与布局管理是至关重要的环节,它直接影响到用户体验和程序的可维护性。Sprint-Layout60,作为一个优秀的布局管理工具,凭借其高效、易用的特点,...
[Windows] 搞电子的福音,抄板软件Sprint-Layout 软件简介】 Sprint-Layout 是一种PCB画板/抄板DIY软件,比AD和protel简单易用。 软件由 tplin 根据 Sprint-Layout 6.0 德文20140310注册版汉化修改,绿色版...
在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android的五种主要布局:LinearLayout、RelativeLayout、FrameLayout、GridLayout以及...
使用 Vue 实现 Grid Layout 功能实例代码 本文主要介绍了使用 Vue 实现 Grid Layout 功能的代码讲解,涵盖了基本布局、节点排版、拖拽事件等多个方面的知识点。 基本布局 在实现 Grid Layout 功能之前,首先需要 ...
**jQuery Layout:经典布局策略详解** 在Web开发中,页面布局设计是至关重要的,它决定了用户的交互体验和视觉效果。jQuery Layout 是一个强大的基于jQuery的布局框架,它为开发者提供了灵活且可定制化的布局解决...
PADS Layout是其设计环节中用于进行电路板布局的部分,而Router则是用于布线的组件。在PCB设计中,布局和布线是前后相续的两个重要步骤,两者之间的同步操作对于提高设计效率和减少错误有着重要意义。 在PADS V9.3...
Layout 6.0是一款专为电子爱好者和工程师设计的专业PCB(印刷电路板)设计软件。这个绿色汉化完整版确保了用户可以在中国语言环境下轻松使用,无需安装,且已经过汉化处理,使得国内用户在理解和操作上更加便捷。 ...
### 关于DevExpress LayoutControl 控件排版属性详解 DevExpress 是一款功能强大且广泛应用于Windows Forms、WPF 和 ASP.NET 平台的控件库。它提供了丰富的控件和工具,帮助开发者快速创建高质量的应用程序。其中,...
"PADS-LAYOUT高级应用(ECO对比)" PADS LAYOUT 高级应用系列教程旨在为电子工程师和PCB设计工程师提供一个详细的学习资源,涵盖了PADS LAYOUT的高级应用知识点。以下是本篇教程的知识点摘要: 1. PADS LAYOUT 高级...
"DDR3 硬件设计和 Layout 设计官方设计参考资料" DDR3 硬件设计和 Layout 设计是指在设计 DDR3 SDRAM 存储器接口时,需要考虑的硬件设计和布局设计因素。该文档提供了详细的设计向导和 Layout 建议,旨在帮助系统/...
HFSS 3D Layout是一款由ANSYS公司推出的三维电磁场仿真工具,专门用于印刷电路板(PCB)和封装的电磁仿真。它基于业界领先的HFSS软件的有限元算法内核,同时提供了符合电子设计自动化(EDA)风格的操作界面和仿真设置...
【EMC之线路板Layout原则】在电子设计领域,印刷电路板(PCB)的布局设计对于设备的电磁兼容性(EMC)至关重要。本文将深入探讨如何通过优化布局策略来确保EMC合规性,避免干扰并提升系统性能。 1. 布局的基本原理...
**jQuery UI Layout 插件详解** jQuery UI Layout 是一个强大的前端布局工具,它允许开发者创建复杂的、响应式的页面布局。这个插件通过简单的配置就能实现多面板、分隔的界面,使得网页内容能够灵活地组织和调整。...