??xml version="1.0" encoding="utf-8" standalone="yes"?>在线不卡一区二区,色婷婷国产精品久久包臀,欧美高清性xxxxhdhttp://www.aygfsteel.com/Pudgy/category/2851.html<SCRIPT> var dict_width = 'auto' var dict_height = '72px' var dict_background = 'transparent' var dict_border = '0px dotted #000000' var dict_textColor = '#6FBC4C' var dict_fontSize = '100%' var dict_encoding = 'Utf-8' </SCRIPT> <SCRIPT src="http://livid.cn/services/fortune"></SCRIPT> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script>zh-cnTue, 27 Feb 2007 12:05:26 GMTTue, 27 Feb 2007 12:05:26 GMT60log4j Tutorialshttp://www.aygfsteel.com/Pudgy/archive/2005/08/18/10449.htmlPudgy's WorldPudgy's WorldThu, 18 Aug 2005 08:58:00 GMThttp://www.aygfsteel.com/Pudgy/archive/2005/08/18/10449.htmlhttp://www.aygfsteel.com/Pudgy/comments/10449.htmlhttp://www.aygfsteel.com/Pudgy/archive/2005/08/18/10449.html#Feedback1http://www.aygfsteel.com/Pudgy/comments/commentRss/10449.htmlhttp://www.aygfsteel.com/Pudgy/services/trackbacks/10449.html

目录

使用log4j大概涉及3个主要概?

日志记录?Logger)是日志处理的核心lg。log4jh5U正常?Level)?日志记录?Logger)的可用?span class="strong">Level (不包括自定义U别 Level)Q?以下内容是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):

  • static Level DEBUG

    DEBUG Level指出l粒度信息事件对调试应用E序是非常有帮助的?/p>

  • static Level INFO

    INFO level表明 消息在粗_度U别上突出强调应用程序的q行q程?

  • static Level WARN

    WARN level表明会出现潜在错误的情Ş?/p>

  • static Level ERROR

    ERROR level指出虽然发生错误事gQ但仍然不媄响系l的l箋q行?/p>

  • static Level FATAL

    FATAL level指出每个严重的错误事件将会导致应用程序的退出?/p>

另外Q还有两个可用的特别的日志记录? (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):

  • static Level ALL

    ALL Level是最低等U的Q用于打开所有日志记录?

  • static Level OFF

    OFF Level是最高等U的Q用于关闭所有日志记录?

日志记录器(LoggerQ的行ؓ是分{的。如下表所C:

日志记录器(LoggerQ将只输出那些别高于或{于它的U别的信息。如果没有设|日志记录器QLoggerQ的U别Q那么它会l承最q的先的别。因此,如果在包com.foo.bar中创Z个日志记录器QLoggerQƈ且没有设|别,那它会l承在包com.foo中创建的日志记录器(LoggerQ的U别。如果在com.foo中没有创建日志记录器QLoggerQ的?那么?span class="strong">com.foo.bar中创建的日志记录器(LoggerQ将l承root 日志记录器(LoggerQ的U别Qroot日志记录器(LoggerQ经常被实例化而可用,它的U别?span class="strong">DEBUG?

有很多方法可以创Z个日志记录器QLoggerQ,下面Ҏ可以取回root日志记录?

Logger logger = Logger.getRootLogger();

q可以这样创Z个新的日志记录器:

Logger logger = Logger.getLogger("MyLogger");

比较常用的用法,是Ҏcd实例化一个静态的全局日志记录?

static Logger logger = Logger.getLogger(test.class);

所有这些创建的?logger"的日志记录器都可以用下面Ҏ讄U别:

logger.setLevel((Level)Level.WARN);

可以使用7个别中的Q何一? Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.

Appender 控制日志怎样输出。下面列Z些可用的Appender(log4j API中所描述?http://jakarta.apache.org/log4j/docs/api/index.html):

  1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事g到System.out或?System.err。默认的目标是System.out?

  2. DailyRollingFileAppender 扩展FileAppenderQ因此多个日志文件可以以一个用户选定的频率进行@环日志记录?

  3. FileAppender 把日志事件写入一个文?

  4. RollingFileAppender 扩展FileAppender备䆾定w辑ֈ一定大的日志文g?/p>

  5. WriterAppenderҎ用户的选择把日志事件写入到Writer或者OutputStream?

  6. SMTPAppender 当特定的日志事g发生Ӟ一般是指发生错误或者重大错误时Q发送一邮件?

  7. SocketAppender l远E日志服务器Q通常是网l套接字节点Q发送日志事ӞLoggingEventQ对象?/p>

  8. SocketHubAppender l远E日志服务器组Q通常是网l套接字节点Q发送日志事ӞLoggingEventQ对象?/p>

  9. SyslogAppenderl远E异步日志记录的后台_E序(daemon)发送消息?

  10. TelnetAppender 一个专用于向只ȝl套接字发送消息的log4j appender?

q可以实?Appender 接口Q创Z自己的方式进行日志输出的Appender?

q里是一个非常简单的例子Q程序实CSimpleLayout和FileAppender:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class simpandfile {
static Logger logger = Logger.getLogger(simpandfile.class);
public static void main(String args[]) {
SimpleLayout layout = new SimpleLayout();
FileAppender appender = null;
try {
appender = new FileAppender(layout,"output1.txt",false);
} catch(Exception e) {}
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

你可以下? simpandfile.java?q可以查看它的输出: output1.txt.

q里是一个非常简单的例子Q程序实C HTMLLayout和WriterAppender:

import java.io.*;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.WriterAppender;
public class htmlandwrite {
static Logger logger = Logger.getLogger(htmlandwrite.class);
public static void main(String args[]) {
HTMLLayout layout = new HTMLLayout();
WriterAppender appender = null;
try {
FileOutputStream output = new FileOutputStream("output2.html");
appender = new WriterAppender(layout,output);
} catch(Exception e) {}
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

你可以下? simpandfile.java. q可以查看它的输出:output1.txt.

q里是一个非常简单的例子Q程序实CPatternLayout和ConsoleAppender:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.ConsoleAppender;
public class consandpatt {
static Logger logger = Logger.getLogger(consandpatt.class);
public static void main(String args[]) {
// Note, %n is newline
String pattern = "Milliseconds since program start: %r %n";
pattern += "Classname of caller: %C %n";
pattern += "Date in ISO8601 format: %d{ISO8601} %n";
pattern += "Location of log event: %l %n";
pattern += "Message: %m %n %n";

PatternLayout layout = new PatternLayout(pattern);
ConsoleAppender appender = new ConsoleAppender(layout);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

你可以下?simpandfile.java. q可以查看它的输出: output2.txt.

Log4jl常与外部日志文件联合用,q样很多可选项不必编码在软g中。用外部配|文件的优点是修改可选项不需要重新编译程序。唯一的缺点就是,׃用到io 指oQ速度E微有些减慢?

有两个方法可以用来指定外部配|文Ӟ文本文g或者XML文g。既然现在所有事情都写成XML文gQ那么该教程重点讲解XML文gҎQ但是也包含相关文本文g的例子。首先,看看下面的XML配置文gCZQ?/a>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout"/>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="ConsoleAppender"/>
</root>
</log4j:configuration>

文g以标准的XML声明作ؓ开始,后面跟着指出DTDQ文档类型定义)的DOCTYPE声明Q它定义了XML文g的结构,例如Q什么元素可以嵌入在其他元素中等{。上面文件在log4j发行版的src/java/org/apache/log4j/xml目录中?接着看看装所有元素的 log4j:configuration 元素Q它在DOCTYPE声明中被指定为根元素。嵌入在根元素中有两个结构:

  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout"/>
</appender>

q里创徏一个名?ConsoleAppender"?AppenderQ注意,你可以选择M名字Q该CZ之所以选择"ConsoleAppender"Q完全是ZCZ的设计。接着q个appendercM全名形式l出Q经常用规范Qfully qualifiedQ类名?Appender必须h一个指定的 name?span class="emphasis">class。嵌入在 Appender之内的是 layout元素Q这里它被指定ؓSimpleLayout?Layout 必须h一?class属性?

  <root>
<priority value ="debug" />
<appender-ref ref="ConsoleAppender"/>
</root>

root元素必须存在且不能被子类化。示例中的优先被设|ؓ"debug"Q设|appender饱含一?span class="emphasis">appender-ref元素。还有更多的属性或元素可以指定。查看log4j发行版中的src/java/org/apache/log4j/xml/log4j.dtd以了解关于XML配置文gl构的更多信息。可以用下面q种Ҏ把配|信息文件读入到JavaE序?

DOMConfigurator.configure("configurationfile.xml");

DOMConfigurator 用一DOM树来初始化log4j环境。这里是CZ中的XML配置文gQ?/a>plainlog4jconfig.xml。这里是执行该配|文件的E序: files/externalxmltest.java:

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class externalxmltest {
static Logger logger = Logger.getLogger(filetest.class);
public static void main(String args[]) {
DOMConfigurator.configure("xmllog4jconfig.xml");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

q里是一个实现带?span class="emphasis">PatternLayout?span class="emphasis">FileAppender的日志记录器Logger的XML配置文g:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="appender" class="org.apache.log4j.FileAppender">
<param name="File" value="Indentify-Log.txt"/>
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug"/>
<appender-ref ref="appender"/>
</root>
</log4j:configuration>

你可以从q里下蝲CZ: xmllog4jconfig2.xml?惌得到更多的用XML文g配置log4j环境的例子,h看log4j发行版的目录src/java/org/apache/log4j/xml/examples/ ?

q就是上面讨论的文本文g形式的配|文?

# initialise root logger with level DEBUG and call it BLAH
log4j.rootLogger=DEBUG, BLAH
# add a ConsoleAppender to the logger BLAH
log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
# set set that layout to be SimpleLayout
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout

从这里可以下? plainlog4jconfig.txt。这是执行该配|文件的E序:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class externalplaintest {
static Logger logger = Logger.getLogger(externalplaintest.class);
public static void main(String args[]) {
PropertyConfigurator.configure("plainlog4jconfig.xml");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

你可以下载用该配置文g的示例: externalplaintest.java。想要获得更多的使用文本文g配置log4j环境的例子,h看log4j发行版中的目录examples?

使用外部配置文g的例子就单的讨论到这里,现在应该可以肯定你已l有能力独立学习更多的log4j发行版和试版中提供的例子?/p>



Pudgy's World 2005-08-18 16:58 发表评论
]]>
վ֩ģ壺 | ݸ| ʡ| ̨| | | Ϫ| | | ƽ| ຣʡ| | | | | | ƴ| û| ˮ| | ɽ| ֣| | | | Ϫ| | Դ| Ҷ| ֦| | ɶ| | ʱ| | | ˮ| ղ| ڳ| ¸| ƽ|