目录
Z使用我们卛_要安装的日志记录工具Q还必须要设|操作环境,只有q样Q工h能知道从哪里扑ֈ它所需要的信息Qƈ且操作系l知道从哪里扑ֈq个工具。那么,怎样做呢Q实际上Q它要求更改操作环境。我有一些这斚w的资格文档?Configuring A Windows Working Environment ?Configuring A Unix Working Environment.
?http://jakarta.apache.org/log4j/docs/download.html下蝲log4j发行版?
解压存档文g到合适的目录中?/p>
d文g dist/lib/log4j-1.2.6.jar ?CLASSPATH 环境变量中?
日志记录?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:
有很多方法可以创Z个日志记录器QLoggerQ,下面Ҏ可以取回root日志记录?
Logger logger = Logger.getRootLogger(); |
Logger logger = Logger.getLogger("MyLogger"); |
static Logger logger = Logger.getLogger(test.class); |
所有这些创建的?logger"的日志记录器都可以用下面Ҏ讄U别:
logger.setLevel((Level)Level.WARN); |
Appender 控制日志怎样输出。下面列Z些可用的Appender(log4j API中所描述?http://jakarta.apache.org/log4j/docs/api/index.html):
ConsoleAppender:使用用户指定的布局(layout) 输出日志事g到System.out或?System.err。默认的目标是System.out?
DailyRollingFileAppender 扩展FileAppenderQ因此多个日志文件可以以一个用户选定的频率进行@环日志记录?
FileAppender 把日志事件写入一个文?
RollingFileAppender 扩展FileAppender备䆾定w辑ֈ一定大的日志文g?/p>
WriterAppenderҎ用户的选择把日志事件写入到Writer或者OutputStream?
SMTPAppender 当特定的日志事g发生Ӟ一般是指发生错误或者重大错误时Q发送一邮件?
SocketAppender l远E日志服务器Q通常是网l套接字节点Q发送日志事ӞLoggingEventQ对象?/p>
SocketHubAppender l远E日志服务器组Q通常是网l套接字节点Q发送日志事ӞLoggingEventQ对象?/p>
SyslogAppenderl远E异步日志记录的后台_E序(daemon)发送消息?
TelnetAppender 一个专用于向只ȝl套接字发送消息的log4j appender?
q可以实?Appender 接口Q创Z自己的方式进行日志输出的Appender?
ConsoleAppender appender = new ConsoleAppender(new PatternLayout()); |
FileAppender appender = null; |
FileAppender(Layout layout, String filename) |
FileAppender(Layout layout, String filename, boolean append) |
WriterAppender appender = null; |
q里是一个非常简单的例子Q程序实CSimpleLayout和FileAppender:
import org.apache.log4j.Level; |
你可以下? simpandfile.java?q可以查看它的输出: output1.txt.
q里是一个非常简单的例子Q程序实C HTMLLayout和WriterAppender:
import java.io.*; |
你可以下? simpandfile.java. q可以查看它的输出:output1.txt.
q里是一个非常简单的例子Q程序实CPatternLayout和ConsoleAppender:
import org.apache.log4j.Level; |
你可以下?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" ?> |
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> |
<root> |
DOMConfigurator.configure("configurationfile.xml"); |
DOMConfigurator 用一DOM树来初始化log4j环境。这里是CZ中的XML配置文gQ?/a>plainlog4jconfig.xml。这里是执行该配|文件的E序: files/externalxmltest.java:
import org.apache.log4j.Logger; |
q里是一个实现带?span class="emphasis">PatternLayout?span class="emphasis">FileAppender的日志记录器Logger的XML配置文g:
<?xml version="1.0" encoding="UTF-8" ?> |
你可以从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 |
从这里可以下? plainlog4jconfig.txt。这是执行该配|文件的E序:
import org.apache.log4j.Logger; |
你可以下载用该配置文g的示例: externalplaintest.java。想要获得更多的使用文本文g配置log4j环境的例子,h看log4j发行版中的目录examples?
使用外部配置文g的例子就单的讨论到这里,现在应该可以肯定你已l有能力独立学习更多的log4j发行版和试版中提供的例子?/p>
http://jakarta.apache.org/log4j/docs/manual.html
log4j的简明介l?- Ceki G- 2002q??/p>
http://www.vipan.com/htdocs/log4jhelp.html
不要用System.out.printlnQ用Log4j - Vipan Singla
http://www.opensymphony.com/guidelines/logging.jsp
LOG4J / OpenSymphony日志记录入门
http://builder.com.com/article.jhtml?id=u00820020124kev01.htm
l你的Java应用E序d日志记录 - Kevin Brown