﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-水煮三国-文章分类-Log4J</title><link>http://www.blogjava.net/os586/category/12513.html</link><description>态度决定一切，思想决定出路</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 10:53:16 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 10:53:16 GMT</pubDate><ttl>60</ttl><item><title>使用Log4j输出日志至数据库</title><link>http://www.blogjava.net/os586/articles/33547.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 03 Mar 2006 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/os586/articles/33547.html</guid><wfw:comment>http://www.blogjava.net/os586/comments/33547.html</wfw:comment><comments>http://www.blogjava.net/os586/articles/33547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/os586/comments/commentRss/33547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/os586/services/trackbacks/33547.html</trackback:ping><description><![CDATA[<P>首先创建一数据库表说明:</P>
<P>
<TABLE class="" style="WIDTH: 253px; HEIGHT: 215px" border=1 maxcols="2">
<TBODY>
<TR>
<TD>字段</TD>
<TD>描述</TD></TR>
<TR>
<TD>GUID</TD>
<TD>流水号</TD></TR>
<TR>
<TD>DATE</TD>
<TD>时间</TD></TR>
<TR>
<TD>THREAD</TD>
<TD>当前线程</TD></TR>
<TR>
<TD>LEVEL</TD>
<TD>当前级别</TD></TR>
<TR>
<TD>CLASS</TD>
<TD>当前java程序/方法</TD></TR>
<TR>
<TD>MESSAGES</TD>
<TD>当前输出信息</TD></TR>
<TR>
<TD></TD>
<TD></TD></TR></TBODY></TABLE></P>log4j.properties如下配置:<BR><BR><!--StartFragment -->&nbsp;<SPAN id=ArticleContent1_ArticleContent1_lblContent> 
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.rootLogger=DEBUG,CONSOLE,DATABASE</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.addivity.org.apache=true</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>########################</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000># JDBC Appender</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>#######################</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.Threshold=INFO</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>#log4j.appender.DATABASE.BufferSize=10</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.URL=you jdbcurl</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.driver=you jdbc driver</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.user=</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.password=</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.sql=INSERT INTO&nbsp;YOU_LOG_TABLE<SPAN>&nbsp; </SPAN>VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')</FONT> </SPAN>
<P><FONT color=#ff0000></FONT></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><FONT color=#ff0000>log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout</FONT></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><!--StartFragment --><FONT color=#000000>&nbsp;</FONT><SPAN id=ArticleContent1_ArticleContent1_lblContent></SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN style="FONT-FAMILY: 宋体">下面我们对“</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">%d %t %p %l %m %n</SPAN><SPAN style="FONT-FAMILY: 宋体">”一一讲解：</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%d</SPAN><SPAN style="FONT-FAMILY: 宋体">输出日志时间点的日期或时间，默认格式为</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">ISO8601</SPAN><SPAN style="FONT-FAMILY: 宋体">，也可以在其后指定格式，比如：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%d{yyyy-MM-dd HH:mm:ss}</SPAN><SPAN style="FONT-FAMILY: 宋体">，输出类似：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">2005-7-19 17:49:27</SPAN><SPAN style="FONT-FAMILY: 宋体">，刚好适合插入</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">SQLServer</SPAN><SPAN style="FONT-FAMILY: 宋体">；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%t<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">产生该日志事件的线程名</SPAN><SPAN style="FONT-FAMILY: 宋体">；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%p </SPAN><SPAN style="FONT-FAMILY: 宋体">日志的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">log_level</SPAN><SPAN style="FONT-FAMILY: 宋体">，如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">DEBUG</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">WARN</SPAN><SPAN style="FONT-FAMILY: 宋体">或者</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">INFO</SPAN><SPAN style="FONT-FAMILY: 宋体">；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%c<SPAN>&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">输出所属的类目，通常就是所在类的全名</SPAN><SPAN style="FONT-FAMILY: 宋体">，如“</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">iNotes.Default</SPAN><SPAN style="FONT-FAMILY: 宋体">”；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%m </SPAN><SPAN style="FONT-FAMILY: 宋体">日志的内容；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%l <SPAN>&nbsp;</SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">write2database.main(write2database.java:33)</SPAN><SPAN style="FONT-FAMILY: 宋体">；</SPAN></FONT><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN>
<P><FONT color=infotext></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><SPAN>l<SPAN style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">%n <SPAN>&nbsp;</SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">输出一个回车换行符，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">Windows</SPAN><SPAN style="FONT-FAMILY: 宋体">平台为“</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN><SPAN style="FONT-FAMILY: 宋体">”，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">Unix</SPAN><SPAN style="FONT-FAMILY: 宋体">平台为“</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial"> </SPAN><SPAN style="FONT-FAMILY: 宋体">”<BR><BR></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN style="FONT-FAMILY: 宋体"></SPAN></FONT>&nbsp;</P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN style="FONT-FAMILY: 宋体">程序代码:</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><FONT color=infotext><SPAN style="FONT-FAMILY: 宋体"><!--StartFragment -->&nbsp;<SPAN id=ArticleContent1_ArticleContent1_lblContent></SPAN></SPAN></FONT></P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import sun.jdbc.odbc.*; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import java.sql.*; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"></SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import org.apache.log4j.Category; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import org.apache.log4j.Level; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import org.apache.log4j.Logger; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import org.apache.log4j.PropertyConfigurator; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">import org.apache.log4j.jdbc.*; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"></SPAN>
<P>
<P class=MsoNormal style="TEXT-INDENT: 20pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">/* </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>add for log4j: class Logger is the central class in the log4j package. </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>we can do most logging operations by Logger except configuration. </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>getLogger(...): retrieve a logger by name, if not then create for it. </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>*/ </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN>static Logger logger = Logger.getLogger </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>( write2database.class.getName () ) ; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>
<P>
<P class=MsoNormal style="TEXT-INDENT: 40pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">/* </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>add for log4j: class BasicConfigurator can quickly configure the package. </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>print the information to console. </SPAN>
<P>
<P class=MsoNormal><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体">*/ </SPAN>
<P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>PropertyConfigurator.configure ( "log4j2database.properties" ) ; </SPAN>
<P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>
<P>
<P class=MsoNormal><SPAN lang=DA style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>logger.info ( "just test" ) ;<BR></SPAN></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P>&nbsp;</P></SPAN><img src ="http://www.blogjava.net/os586/aggbug/33547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/os586/" target="_blank">水煮三国</a> 2006-03-03 21:31 <a href="http://www.blogjava.net/os586/articles/33547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>