<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>风牛菜籽 &#187; Apache</title>
	<atom:link href="http://www.caiyanpei.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.caiyanpei.com</link>
	<description>拖延症重症患者</description>
	<lastBuildDate>Tue, 25 Mar 2025 01:51:19 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6.1</generator>
		<item>
		<title>关于log4j.xml日志输出的配置</title>
		<link>http://www.caiyanpei.com/about-log4j-conf/</link>
		<comments>http://www.caiyanpei.com/about-log4j-conf/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 17:33:21 +0000</pubDate>
		<dc:creator>tsai</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[appender]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://cyp.me/?p=32</guid>
		<description><![CDATA[Log4j是Apache的一个开放源代码项目，通过使用Log4j，我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等；我们也可以控制每一条日志的输出格式；通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是，这些可以通过一个配置文件来灵活地进行配置，而不需要修改应用的代码。 <a href="http://www.caiyanpei.com/about-log4j-conf/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h4>一、概述</h4>
<p>在应用程序中添加日志记录总的来说基于三个目的：监视代码中变量的变化情况，周期性的记录到文件中供其他应用进行统计分析工作；跟踪代码运行时轨迹，作为日后审计的依据；担当集成开发环境中的调试器的作用，向文件或控制台打印代码的调试信息。 Log4j是Apache的一个开放源代码项目，通过使用Log4j，我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等；我们也可以控制每一条日志的输出格式；通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是，这些可以通过一个配置文件来灵活地进行配置，而不需要修改应用的代码。</p>
<h4>二、实例简析</h4>
<p>以下是某个系统log4j.xml具体的配置，在此以注释做简要解析，具体配置详述见详述说明：</p>
<pre class="brush: xml; title: ; wrap-lines: true; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;GBK&quot;?&gt;
&lt;log4j:configuration xmlns:log4j=&quot;http://jakarta.apache.org/log4j/&quot; debug=&quot;false&quot;&gt;
&lt;!—================================================—&gt;
&lt;!— 控制台输出通道 —&gt;
&lt;!—================================================—&gt;
&lt;!—appender标签：设置通道A1和输出方式：org.apache.log4j.ConsoleAppender即控制台输
出方式—&gt;
&lt;appender name=&quot;A1&quot;&gt;
&lt;!—layout标签：定义输出样式—&gt;
&lt;layout&gt;
&lt;!—ConversionPattern参数：设置输出文件项目和格式—&gt;
&lt;param name=&quot;ConversionPattern&quot; value=&quot;%d %-4r %-5p (%F:%L) %10c %3x - %m%n&quot;/&gt;
&lt;/layout&gt;
&lt;!—filter标签：滤镜设置输出的级别，此处设置的过滤最大和最小级别参数都为FATAL，
因此，在控制台输出的消息都为FATAL级别的消息—&gt;
&lt;filter&gt;
&lt;param name=&quot;levelMin&quot; value=&quot;FATAL&quot;/&gt;
&lt;param name=&quot;levelMax&quot; value=&quot;FATAL&quot;/&gt;
&lt;/filter&gt;
&lt;/appender&gt;
&lt;!—===================================================—&gt;
&lt;!— 文件输出通道 —&gt;
&lt;!—===================================================—&gt;
&lt;!—第二个appender标签：设置通道A2和输出方式：
org.apache.log4j.DailyRollingFileAppender即文件输出方式—&gt;
&lt;appender name=&quot;A2&quot;&gt;
&lt;!—设置File参数：日志输出路径及文件名：D:/DOCUMENT/logs/log.log—&gt;
&lt;param name=&quot;File&quot; value=&quot;D:/DOCUMENT/logs/log.log&quot;/&gt;
&lt;!—同第一个appender节点的layout标签—&gt;
&lt;layout&gt;
&lt;param name=&quot;ConversionPattern&quot; value=&quot;%d %-4r %-5p (%F:%L) %10c %3x - %m%n&quot;/&gt;
&lt;/layout&gt;
&lt;!--filter标签：此处设置的过滤最小级别参数为WARN，最大级别参数为FATAL，
因此，在该日志文件输出的消息为WARN到FATAL级别的消息--&gt;
&lt;filter&gt;
&lt;param name=&quot;levelMin&quot; value=&quot;WARN&quot;/&gt;
&lt;param name=&quot;levelMax&quot; value=&quot;FATAL&quot;/&gt;
&lt;/filter&gt;
&lt;/appender&gt;
&lt;!—==============================================================—&gt;
&lt;!— category节点设置 —&gt;
&lt;!— category节点里边priority定义了相应类别相应级别以上的日 —&gt;
&lt;!— 志往appender传送，同时必须满足appender里边的最小输出级别 —&gt;
&lt;!—==============================================================—&gt;
&lt;category name=&quot;org.apache&quot; additivity=&quot;true&quot;&gt;
&lt;priority value=&quot;WARN&quot;/&gt;
&lt;/category&gt;
&lt;category name=&quot;net.sf.hibernate&quot; additivity=&quot;true&quot;&gt;
&lt;priority value=&quot;WARN&quot;/&gt;
&lt;/category&gt;
&lt;category name=&quot;com.sun.faces&quot; additivity=&quot;true&quot;&gt;
&lt;priority value=&quot;INFO&quot;/&gt;
&lt;/category&gt;
&lt;category name=&quot;org.quartz.impl.jdbcjobstore&quot; additivity=&quot;true&quot;&gt;
&lt;priority value=&quot;INFO&quot;/&gt;
&lt;/category&gt;
&lt;category name=&quot;com.opensymphony.oscache&quot; additivity=&quot;true&quot;&gt;
&lt;priority value=&quot;WARN&quot;/&gt;
&lt;/category&gt;
&lt;!—===============================================================================—&gt;
&lt;!— root节点设置 —&gt;
&lt;!—设置接收所有输出的通道，当上面的category节点找不到相应的appender输出级别 —&gt;
&lt;!—设置的情况下，采用root节点里边的设置级别，同时采用的级别满足appender里 —&gt;
&lt;!—设置的最小级别，如此处设置warn，但A1这个appender设置的最小级别为FATAL， —&gt;
&lt;!—则采用的最小级别为FATAL —&gt;
&lt;!—===============================================================================—&gt;
&lt;root&gt;
&lt;priority value=&quot;WARN&quot;/&gt;
&lt;!—appender-ref标签：定义日志输出的appender id—&gt;
&lt;appender-ref ref=&quot;A1&quot;/&gt;
&lt;appender-ref ref=&quot;A2&quot;/&gt;
&lt;/root&gt;
&lt;/log4j:configuration&gt;
</pre>
<h4>三、配置说明</h4>
<p>(1).几个主要节点说明 appender里边filter定义了”levelMin”和”levelMax”,设置了最小和最大输出级别； category里边priority定义了什么级别以上的日志往appender传送，同时必须满足appender里边的最小输出级别； 当不配置category时，以root里边priority定义了什么级别以上的日志往appender传送，同时必须满足appender里边的最小输出级别，未在category范围内的输出日志遵照root里边级别； root里边appender-ref定义的是日志输出有哪些appender。</p>
<p>(2). 输出方式appender一般有5种： log4j提供了以下几种常用的输出目的地： org.apache.log4j.ConsoleAppender，将日志信息输出到控制台 org.apache.log4j.FileAppender，将日志信息输出到一个文件 org.apache.log4j.DailyRollingFileAppender，将日志信息输出到一个，并且每天输出到一个新的日志文件,按照不同的配置可以定义每月一个日志文件，或者每周，每天，每小时，每分钟等输出一个新的日志文件。 org.apache.log4j.RollingFileAppender，将日志信息输出到一个文件，通过指定文件的的尺寸，当文件大小到达指定尺寸的时候会自动把文件改名，如名为example.log的文件会改名为example.log.1，同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸，又会自动把文件改名为example.log.2，同时产生一个example.log文件。依此类推，直到example.log. MaxBackupIndex，MaxBackupIndex的值可在配置文件中定义。 org.apache.log4j.WriterAppender，将日志信息以流格式发送到任意指定的地方。 org.apache.log4j.jdbc.JDBCAppender，通过JDBC把日志信息输出到数据库中。 org.apache.log4j.net.SMTPAppender,将日志信息以邮件的方式发送到指定的邮箱。</p>
<p>(3).appender中Layout标签说明 有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appender的后面附加Layout来完成这个功能。Layout提供了四种日志输出样式，如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。 其语法表示为： org.apache.log4j.HTMLLayout（以HTML表格形式布局）， org.apache.log4j.PatternLayout（可以灵活地指定布局模式）， org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串）， org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息） PatternLayout 中ConversionPattern参数的格式含义如下：</p>
<p>%c 输出日志信息所属的类的全名</p>
<p>%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy-MM-dd HH:mm:ss }，输出类似：2002-10-18- 22：10：28 ;比如 %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}格式可以参考 java类 SimpleDateFormat,不过按照此类的设置会影响速度。可以选择更快的方式%d{ISO8601},%d{ABSOLUTE}, %d{RELATIVE}.或者使用log4j的ISO8601DateFormat, AbsoluteTimeDateFormat,RelativeTimeDateFormat 和 DateTimeDateFormat 方式。</p>
<p>%f 输出日志信息所属的类的类名</p>
<p>%l 输出日志事件的发生位置，即输出日志信息的语句处于它所在的类的第几行</p>
<p>%m 输出代码中指定的信息，如log(message)中的message</p>
<p>%M 输出日志信息中所发生的方法名。</p>
<p>%n 输出一个回车换行符，Windows平台为“\r\n”，Unix平台为“\n”</p>
<p>%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL。如果是调用debug()输出的，则为DEBUG，依此类推</p>
<p>%r 输出自应用启动到输出该日志信息所耗费的毫秒数</p>
<p>%t 输出产生该日志事件的线程名<br />
(4). 日记记录的优先级priority priority优先级由高到低分为： OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。 Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。 这几个级别声明如下： Logger.debug(Object message);//调试信息 Logger.info(Object message);//一般信息 Logger.warn(Object message);//警告信息 Logger.error(Object message);//错误信息 Logger.fatal(Object message);//致命错误信息</p>
<p>本文部分内容来自网上，有侵犯到您权益或发现错误内容请提出，将更正，<a title="目油菜" href="http://www.xiuchezu.com/" target="_self">目油菜</a>保留部分内容得所有权。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caiyanpei.com/about-log4j-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
