介绍下比较常用的日志记录工具,LOG4J就不用介绍了.最好详细点
解决方案 »
- 数据插入语句,出现语法错误
- 在javascript的循环语句里面再镶嵌循环语句应该怎么写?
- 请问这种网站困难吗?
- 求教:Connection reset by peer: socket write error,怎么解决?
- 我有JSP+SERVLET+JAVABEAN开发的网站代码,有意请联系QQ:249841933
- 用get方式传值访问后,在用post方式传值就不起作用了.怎么办?
- String ssql="INSERT INTO usercode VALUES ('"+name1+"','"+password+"','"+email+"','500','"+url+"','"+QQ+"')";有问题吗?在SQL Seve
- Unable to compile class for JSPimport com.jspsmart.upload.*;
- 配置JB+EJB出现了这样的问题。是我的jb不是正版的原因么?
- 大家帮忙啊,如何判断发送表单的页面是否是服务器上的而不是跨站提交的?在线等待!
- jsp中下载access
- (求助)请问有没有比较好用的jsp编写的论坛源码
log4j2me是用于J2ME 平台上的log4j。当把你的代码移到J2SE/J2EE平台上时,不需要对代码进行改变,只需把log4j2me.jar替换掉log4j jar文件。与log4j所不同的是不能在j2me环境中使用log4j.properties文件来配置log4j,但可以从 JAD文件读取配置。还有其它在J2ME平台中的不同之处,log4j2me都提供了相应的解决方案。
http://blog.csdn.net/javaxl/archive/2004/10/15/137328.aspx你可以在不安装的前提下使用日志包。其中最简单的方法就是建立一个Java.util.logging.Logger的实例。一旦建立好这个实例,你就可以开始记录了。下面是一个记录类的完整例子:package tips;import java.util.logging.Logger;public class LogTip {
// create an instance of the Logger class
private static Logger log = Logger.getLogger("tips.LogTip"); public static void main(String args[]) {
log.finest("the finest message");
log.finer("finer message");
log.fine("a fine message");
log.config("some configuration message");
log.info("a little bit of information");
log.warning("a warning message");
log.severe("a severe message");
}
} 你在编译运行这个类的时候,你的控制台中就会有以下的输出显示:Apr 1, 2003 11:09:05 PM tips.LogTip main
INFO: a little bit of information
Apr 1, 2003 11:09:05 PM tips.LogTip main
WARNING: a warning message
Apr 1, 2003 11:09:05 PM tips.LogTip main
SEVERE: a severe message并不是所有的记录项都会显示在控制台中,这是因为Java的日志包应用了日志级别别。日志级别允许你控制记录输出。在开发过程中,你希望得到大量的调试信息,从而你可以了解你的应用程序将会出现什么问题。但作为产品,你就不希望他输出调试结果并且不出错。你也可以通过使用日志包中的日志级别别来控制。在Java.util.logging.Level这个类中定义了7种日志级别别,他们分别是:SEVERE,WARNING, INFO,CONFIG,FINE, FINER和FINEST。其中SEVERE即用于处理错误以及灾难事件。而FINE,FINER和FINEST级是用于处理一些不那么重要的信息,以及用于程序调试。另外,你可以将日志级别别设定为ALL或者OFF来设定它的极值。当你将其设定为ALL的时候,所有的记录项都为开放的,相反,当你设定为OFF的时候,所有的记录项都为禁止的。由于日志级别别是分层次的,当你将其定义为某一级别后,就只有此级别或是更高级别的能被记录。在七种级别中SEVERE是最高级别,FINEST是最低级别。默认级别是INFO;这就是我们在上面代码段中只看到三个记录信息的原因。如果想看到所有的记录信息的话,我们就要改变一下设置。有很多方法来改变默认设置,比如用工具文件,对运行时间编程或是提出你自己的结构类。如果你通过工具选项来设置记录的话,你有两种选择,一是你可以用默认的道具文件(这种方法不推荐)——%YOUR_JRE_PATH%/lib/logging.properties;还有就是你可以通过设定系统文件java.util.logging.config.file,将其指定到你需要使用的文件名来自己设置道具文件,方法如下:java -Djava.util.logging.config.file=log.properties tips.LogTip。这样的话不能从log.properties文件中度出任何地记录工具,在这个例子中,这是默认的logging.properties文件的改版,具体如下:handlers= java.util.logging.ConsoleHandler
.level=FINEST
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 当运行这个类的时候,就会有以下的输出显示:Apr 1, 2003 11:12:00 PM tips.LogTip main
FINEST: the finest message
Apr 1, 2003 11:12:00 PM tips.LogTip main
FINER: finer message
Apr 1, 2003 11:12:00 PM tips.LogTip main
FINE: a fine message
Apr 1, 2003 11:12:00 PM tips.LogTip main
CONFIG: some configuration message
Apr 1, 2003 11:12:00 PM tips.LogTip main
INFO: a little bit of information
Apr 1, 2003 11:12:00 PM tips.LogTip main
WARNING: a warning message
Apr 1, 2003 11:12:00 PM tips.LogTip main
SEVERE: a severe message 在实际应用中,你需要对记录尽可能多的控制。你学要将某些记录定义为FINEST,某些类记录为SEVERE或是其他级别。你也可能需要记录一些关于控制台的信息,或是一些关于文件的信息,甚至有时是关于数据库的信息。
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN 其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 3.配置日志信息的格式(布局),其语法为: log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN 其中,Log4j提供的layout有以e几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) 二、在代码中使用Log4j 1.得到记录器 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为: public static Logger getLogger( String name) 通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如: static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) 2.读取配置文件 当获得了日志记录器之后,第二步将配置Log4j环境,其语法为: BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。 3.插入记录信息(格式化日志信息) 当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下: Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;