java logging api_java Logging API 使用

2023-06-26 18:15
28
0

当你在开发程序的时候, 调试(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

你将会看到 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 去调用. 


原文链接:https://blog.csdn.net/weixin_30949673/article/details/114198193

全部评论