log4j2 root level.rootLogger 与log4j2 root level.rootCategory 有什么区别

今天看啥 热点:
原文地址:http://blog.csdn.net/caolaosanahnu/article/details/7553999下面是在log4j官方的API中写的,足以能解释logger与category的区别:public class Categoryextends java.lang.Objectimplements AppenderAttachableThis class has been deprecated and replaced by theLoggersubclass. It will be kept around to preserve backward compatibility until mid 2003.Logger is a subclass of Category, i.e. it extends Category. In other words, a loggeris a category. Thus, all operations that can be performed on a category can be performed on a logger. Internally, whenever log4j is asked to produce a Category object, it will instead produce a Logger object. Log4j 1.2 willnever produce Category objects but only Logger instances. In order to preserve backward compatibility, methods that previously accepted category objects still continue to accept category objects.For example, the following are all legal and will work as expected.
// Deprecated form:
Category cat = Category.getInstance("foo.bar")
// Preferred form for retrieving loggers:
Logger logger = Logger.getLogger("foo.bar")
The first form is deprecated and should be avoided.There is absolutely no need for new client code to use or refer to theCategory class. Whenever possible, please avoid referring to it or using it.See the short manual for an introduction on this class.See the document entitled preparing for log4j 1.3 for a more detailed discussion.Author:Ceki Gülcü, Anders Kristensen =======本文出自 “cloud” 博客,请务必保留此出处http://tcloud./9843
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
Java编程最近更新2953人阅读
&?xml version='1.0' encoding='UTF-8' ?&
&!DOCTYPE log4j:configuration SYSTEM &log4j.dtd&&
&log4j:configuration xmlns:log4j=&http://jakarta.apache.org/log4j/&&
&appender name=&CONSOLE& class=&org.apache.log4j.ConsoleAppender&&
&layout class=&org.apache.log4j.PatternLayout&&
&param name=&ConversionPattern& value=&%d{yyyy-MM-dd HH:mm:ss} [%7r] %-5p %c %M:%L - %m%n&/&
&/appender&
&appender name=&FILE-DEBUG& class=&org.apache.log4j.DailyRollingFileAppender&&
&param name=&DatePattern& value=&'.'yyyyMMdd& /&
&param name=&Append& value=&true&/&
&param name=&Threshold& value=&DEBUG&/&
&param name=&Encoding& value=&UTF-8&/&
&param name=&file& value=&${profile.log.root.path}/${profile.log.name.web}/${profile.log.name.web}-debug.log&/&
&layout class=&org.apache.log4j.PatternLayout&&
&param name=&ConversionPattern& value=&%d{yyyy-MM-dd HH:mm:ss} [%7r] %-5p %c %M:%L - %m%n&/&
&/appender&
&category name=&com.portal.controller& &strong&&span style=&color:#ff6666;&&additivity=&false&&/span&&/strong&&
&priority value=&INFO&/&
&appender-ref ref=&CONSOLE&/&
&/category&
&priority value=&INFO&/&
&appender-ref ref=&CONSOLE&/&
&appender-ref ref=&FILE-DEBUG&/&
&/log4j:configuration&
public String index(Model model) {
(&日志测试&);
测试结果:
1、不写root标签,只写category标签&
输出结果:测试日志
2、写root标签和category,category的属性additivity=&false&
输出结果:测试日志
3、写root标签和category,category的属性additivity=&true&
输出结果:测试日志 & 测试日志
4、不写category,只写root
输出结果:测试日志
不会输出任何日志
6、写root,不写category,但是root中不写&appender-ref ref=&CONSOLE&/&
& & & 在控制台不会输出任何日志
7、不写root,写category,category的属性additivity=&false&
& & & 输出结果:测试日志&
& & & 说明:category的属性additivity=&false&表示在category中定义日志输在root中过滤掉
category的name,指定的是控制某个包下的日志 , 可以按照业务逻辑进行日志分类输出打印&
root是控制整个工程的日志
root和category都是通过&appender-ref ref=&CONSOLE&/&执行具体appender中的日志策略,配置哪个appender执行哪个
root和category是父子关系,root标签可以不写,category也可以不写&, 但是必须写一个
& & & &category的属性additivity=&false&表示在category中定义日志输在root中过滤掉
category的name,按照业务逻辑进行日志分类输出打印&
例如:定义name = “userManagerLog” , 那么在代码中与用户管理相关的业务引入日志的时候 &LogManager.getLogger(“userManagerLog”) ,
& &&则可以通过控制一个业务逻辑的日志打到一个文件下
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122771次
积分:1691
积分:1691
排名:千里之外
原创:36篇
转载:39篇
(1)(1)(4)(6)(1)(2)(1)(1)(1)(3)(2)(2)(1)(2)(1)(2)(1)(6)(1)(2)(1)(3)(4)(3)(2)(3)(1)(2)(4)(8)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
一、log4j.jar包下载地址:
二、配置文件类型:log4j配置文件可以是log4j.xml也可以是log4j.properties
log4j.xml配置说明
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&
&log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' &
&appender name="myConsole" class="org.apache.log4j.ConsoleAppender"&
&layout class="org.apache.log4j.PatternLayout"&
&param name="ConversionPattern"
value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" /&
&!--过滤器设置输出的级别--&
&filter class="org.apache.log4j.varia.LevelRangeFilter"&
&param name="levelMin" value="debug" /&
&param name="levelMax" value="warn" /&
&param name="AcceptOnMatch" value="true" /&
&/appender&
&appender name="myFile" class="org.apache.log4j.RollingFileAppender"&
&param name="File" value="D:/output.log" /&&!-- 设置日志输出文件名 --&
&!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --&
&param name="Append" value="true" /&
&param name="MaxBackupIndex" value="10" /&
&layout class="org.apache.log4j.PatternLayout"&
&param name="ConversionPattern" value="%p (%c:%L)- %m%n" /&
&/appender&
&appender name="activexAppender" class="org.apache.log4j.DailyRollingFileAppender"&
&param name="File" value="E:/activex.log" /&
&param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /&
&layout class="org.apache.log4j.PatternLayout"&
&param name="ConversionPattern"
value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" /&
&/appender&
&!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制--&
&logger name="com.runway.bssp.activeXdemo" additivity="false"&
&priority value ="info"/&
&appender-ref ref="activexAppender" /&
&!-- 根logger的设置--&
&priority value ="debug"/&
&appender-ref ref="myConsole"/&
&appender-ref ref="myFile"/&
&/log4j:configuration&
(1). 输出方式appender一般有5种:
org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
(2). 日记记录的优先级priority,优先级由高到低分为
OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。
(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
输出代码指定信息,如info(“message”),输出message
输出优先级,即 FATAL ,ERROR 等
输出从启动到显示该log信息所耗费的毫秒数
输出产生该日志事件的线程名
log4j.xml配置文件节点详解
xml declaration and DTD
xml配置文件的头部包括两个部分:xml声明和DTD声明。头部的格式如下:
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&
log4j:configuration (root element)
xmlns:log4j [#FIXED attribute] : 定义log4j的名字空间,取定值"http://jakarta.apache.org/log4j/"
appender [* child] : 一个appender子元素定义一个日志输出目的地
logger [* child] : 一个logger子元素定义一个日志写出器
root [? child] : root子元素定义了root logger
appender元素定义一个日志输出目的地。
name [#REQUIRED attribute] : 定义appender的名字,以便被后文引用
class [#REQUIRED attribute] : 定义appender对象所属的类的全名
param [* child] : 创建appender对象时传递给类构造方法的参数
layout [? child] : 该appender使用的layout对象
layout元素定义与某一个appender相联系的日志格式化器。
class [#REQUIRED attribute] : 定义layout对象所属的类的全名
param [* child] : 创建layout对象时传递给类构造方法的参数
logger元素定义一个日志输出器。
name [#REQUIRED attribute] : 定义logger的名字,以便被后文引用
additivity [#ENUM attribute] : 取值为"true"(默认)或者"false",是否继承父logger的属性
level [? child] : 定义该logger的日志级别
appender-ref [* child] : 定义该logger的输出目的地
root元素定义根日志输出器root logger。
param [* child] : 创建root logger对象时传递给类构造方法的参数
level [? child] : 定义root logger的日志级别
appender-ref [* child] : 定义root logger的输出目的地
level元素定义logger对象的日志级别。
class [#IMPLIED attribute] : 定义level对象所属的类,默认情况下是"org.apache.log4j.Level类
value [#REQUIRED attribute] : 为level对象赋值。可能的取值从小到大依次为"all"、"debug"、"info"、"warn"、"error"、"fatal"和"off"。当值为"off"时表示没有任何日志信息被输出
param [* child] : 创建level对象时传递给类构造方法的参数
appender-ref
appender-ref元素引用一个appender元素的名字,为logger对象增加一个appender。
ref [#REQUIRED attribute] : 一个appender元素的名字的引用
appender-ref元素没有子元素
param元素在创建对象时为类的构造方法提供参数。它可以成为appender、layout、filter、errorHandler、level、categoryFactory和root等元素的子元素。
name and value [#REQUIRED attributes] : 提供参数的一组名值对
param元素没有子元素
在xml文件中配置appender和layout
创建不同的Appender对象或者不同的Layout对象要调用不同的构造方法。可以使用param子元素来设定不同的参数值。
创建ConsoleAppender对象
ConsoleAppender的构造方法不接受其它的参数。
... ... ... ...
&appender name="console.log" class="org.apache.log4j.ConsoleAppender"&
&layout ... &
&/appender&
... ... ... ...
创建FileAppender对象
可以为FileAppender类的构造方法传递两个参数:File表示日志文件名;Append表示如文件已存在,是否把日志追加到文件尾部,可能取值为"true"和"false"(默认)。
... ... ... ...
&appender name="file.log" class="org.apache.log4j.FileAppender"&
&param name="File" value="/tmp/log.txt" /&
&param name="Append" value="false" /&
&layout ... &
&/appender&
... ... ... ...
创建RollingFileAppender对象
除了File和Append以外,还可以为RollingFileAppender类的构造方法传递两个参数:MaxBackupIndex备份日志文件的个数(默认是1个);MaxFileSize表示日志文件允许的最大字节数(默认是10M)。
... ... ... ...
&appender name="rollingFile.log" class="org.apache.log4j.RollingFileAppender"&
&param name="File" value="/tmp/rollingLog.txt" /&
&param name="Append" value="false" /&
&param name="MaxBackupIndex" value="2" /&
&param name="MaxFileSize" value="1024" /&
&layout ... &
&/appender&
... ... ... ...
创建PatternLayout对象
可以为PatternLayout类的构造方法传递参数ConversionPattern。
... ... ... ...
&layout class="org.apache.log4j.PatternLayout&
&param name="Conversion" value="%d [%t] %p - %m%n" /&
... ... ... ...
验证中.....
浏览 67658
zengxiantao
浏览: 88044 次
来自: 天津
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 log4j2 root level 的文章

 

随机推荐