xml格式的log4j配置文件概述

本文介绍如何使用Log4j的DOMConfigurator通过XML文件配置日志输出。示例展示了基本的XML配置文件结构,包括appender、category和root元素的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

xml格式的log4j配置文件需要使用org.apache.log4j.html.DOMConfigurator.configure()方法来
读入。对xml文件的语法定义可以在log4j的发布包中找到:org/apache/log4j/xml/log4j.dtd。

 

Xml的一个配置文件:sample1.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 ="STDOUT"  class ="org.apache.log4j.ConsoleAppender" >  

 
< layout  class ="org.apache.log4j.PatternLayout" >  

 
< param  name ="ConversionPattern"  

 value
="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />  

 
</ layout >  

 
</ appender >   

 
< category  name ="org.apache.log4j.xml" >  

 
< priority  value ="info"   />  

 
</ category >  

 
< root >  

 
< priority  value  ="debug"   />  

 
< appender-ref  ref ="STDOUT"   />  

 
</ root >  

</ log4j:configuration >  

 

说明:

①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

源代码:

 

package  exampleslog4j.xml; 

import  org.apache.log4j.xml.DOMConfigurator; 

import  org.apache.log4j.Category; 

import  java.net. *

public   class  XMLSample 

 
static Category cat = Category.getInstance(XMLSample.class.getName()); 

 
public static void main(String argv[]) 

 
if(argv.length == 1

 init(argv[
0]); 

 
else 

 Usage(
"Wrong number of arguments."); 

 sample(); 

 }
 

 

 
static  void Usage(String msg) 

 System.err.println(msg); 

 System.err.println( 
"Usage: java " + XMLSample.class.getName() + "configFile"); 

 System.exit(
1); 

 }
 

 
static void init(String configFile) {
     DOMConfigurator.configure(configFile); 


 }
 

 

 
static void sample() 

 
int i = -1

 Category root 
= Category.getRoot(); 

 cat.debug(
"Message " + ++i); 

 cat.warn (
"Message " + ++i); 

 cat.error(
"Message " + ++i); 

 Exception e 
= new Exception("Just testing"); 

 cat.debug(
"Message " + ++i, e); 

 }
 

}
 

 

执行后的效果:

2004 - 05 - 24   22 : 07 : 28 , 352  DEBUG  [ main ]  xml.XMLSample (XMLSample.java: 55 ) - Message  0  

2004 - 05 - 24   22 : 07 : 28 , 352  WARN  [ main ]  xml.XMLSample (XMLSample.java: 56 ) - Message  1  

2004 - 05 - 24   22 : 07 : 28 , 362  ERROR  [ main ]  xml.XMLSample (XMLSample.java: 57 ) - Message  2  

2004 - 05 - 24   22 : 07 : 28 , 362  DEBUG  [ main ]  xml.XMLSample (XMLSample.java: 59 ) - Message  3  

java.lang.Exception: Just testing 

 at exampleslog4j.xml.XMLSample.sample(XMLSample.java:
58

 at exampleslog4j.xml.XMLSample.main(XMLSample.java:
36
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值