我的空间,写我所写,禅我所藏
与我一起遨游吧
java Logging API 使用
当你在开发程序的时候, 调试(debugging)和日志(logging)都是非常重要的工作, 但是, 现在有太多的 logging api 问世, 因为他们都不错, 很难做一个抉择. 国外 java 论坛对于这些 logging 方式也是有一番讨论.
而 common logging 就是一个在这几个不同的 logging api 中建立小小的桥梁.目前在 java 中最有名的 log 方式, 首推是 log4j, 另是 jdk 1.4 logging api. 除此之外, 还有 avalon 中用的 logkit 等等 . 而 commons-logging 也有实现一些基本 的 logging 方式为 nooplog 及 simplelog. 对于他们的比较不在这次讨论范围,
有兴趣者请自行参阅参考文件.
快速使用 logging 其实 logging 非常简单去使用, 将 commons-logging.jar 放到 /web-inf/lib 之下.接著写以下的代码
loggingtest.java
package com.softleader.newspaper.java.opensource;
import org.apache.commons.logging.log;
import org.apache.commons.logging.logfactory;
public class loggingtest {
log log = logfactory.getlog(loggingtest.class);
public void hello() {
log.error("error");
log.debug("debug");
log.warn("warn");
log.info("info");
log.trace("trace");
system.out.println("okok");
}
}
在 / 放置一个 jsp 测试 test-commons-logging.jsp
<%@ page import="com.softleader.newspaper.java.opensource.loggingtest" %>
<% loggingtest test = new loggingtest(); test.hello();%>
你将会看到 tomcat console 会有下面输出
log4j:warn no appenders could be found for logger (com.softleader.newspaper.java.opensource.loggingtest).
log4j:warn please initialize the log4j system properly.okok
是因为你还没有配置 commons-logging.properties, 马上会为你介绍 ~~~.
设定 commons-logging.properties 你可以设置你的 log factory 是要使用哪一个 我以 log4j 为例子 在 /web-inf/classes/commons-logging.properties 中写入
org.apache.commons.logging.log=org.apache.commons.logging.impl.log4jcategorylog
如果你 server 是使用 jdk1.4 以上的版本
可以使用 org.apache.commons.logging.impl.jdk14logger
接著根据你的 logger 撰写符合他的 properties 拿 log4j 为例子 你就要在
/web-inf/classes/ 下放置一个 log4j.properties
//日志输出到文件
log4j.rootlogger=debug, a_default
log4j.appender.a_default=org.apache.log4j.rollingfileappender
log4j.appender.a_default.file=c://log/test.log
log4j.appender.a_default.maxfilesize=4000kb
log4j.appender.a_default.maxbackupindex=10
log4j.appender.a_default.layout=org.apache.log4j.patternlayout
log4j.appender.a_default.layout.conversionpattern=%d{iso8601} - %p - %m%n
# 比较完整的输出
# log4j.appender.a_default.layout.conversionpattern=%d %-5p [%t] %-17c{2} (%13f:%l) %3x - %m%n
//日志输出到控制台
log4j.rootlogger=info, a1
log4j.appender.a1=org.apache.log4j.consoleappender
log4j.appender.a1.layout=org.apache.log4j.patternlayout
log4j.appender.a1.layout.conversionpattern=%-d{yyyy-mm-dd hh:mm:ss,sss} [%c]-[%p] %m%n
此时你去执行 test-commons-logging.jsp 输出的内容, 就会记录在你的 c:\log 目录的 test.log 中了 ps:如果没有相关的 class 会使用到 simplog, 此时要设定的是
simplelog.properties 结论以我自己本身使用的经验, log4j 可以满足所有工程师, 所以我也是直接使用 log4j 而没有使用 commons-logging.
不过为了增加产品的通用性, 避免移植时候的麻烦, 新的产品及项目, 我会将他改成 commons-logging api 去调用.
如果你对commons-logging的工作原理不是很了解,请参考<commons-logging的使用方法>
文章整理:
http://www.west263.com
posted on 2007-06-27 14:11
imcb
阅读(482)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
导航
BlogJava
首页
新随笔
联系
聚合
管理
统计
随笔 - 27
文章 - 1
评论 - 3
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
个人备份(2)
(rss)
技术讨论(1)
(rss)
经验的积累(1)
(rss)
随笔档案
2007年7月 (1)
2007年6月 (19)
2007年4月 (2)
2007年3月 (3)
2006年11月 (2)
文章档案
2007年6月 (1)
搜索
最新评论
1. re: 出了ORA-27101: shared memory realm does not exist 错误的处理
垃圾
--sf
2. re: 在Tomcat 5.5.20中配置JNDI的体会
博主是不是在eclipse下面运行的呢?如果是的话关闭eclipse也能运行吗?
--yanglu
3. re: 读取远程文件,然后在指定目录下生成同样的文件
参数还是应该说明一下
--yukingyee
阅读排行榜
1. 出了ORA-27101: shared memory realm does not exist 错误的处理(40093)
2. 通过HREF调用javascript(10149)
3. TNSLISTENER 服务无法启动(1818)
4. 读写Property文件(1687)
5. 在Tomcat 5.5.20中配置JNDI的体会(980)
评论排行榜
1. 读取远程文件,然后在指定目录下生成同样的文件 (1)
2. 在Tomcat 5.5.20中配置JNDI的体会(1)
3. 出了ORA-27101: shared memory realm does not exist 错误的处理(1)
4. 使用cmd窗口去执行sql语句(0)
5. TNSLISTENER 服务无法启动(0)
Powered by:
BlogJava
Copyright © imcb