正文

日志 log4j2007-03-12 22:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/23889.html

分享到:

日志分两种: 1.  系统日志:处理应用程序内部操作而不是基于用户的特定操作。例如:SMTP主机没有响应。 2.  应用程序日志:特定用户操作中的记录。   日志作用 记录异常; 安全检查 非法用户跟踪 测试 日志种类 1.  容器日志文件。日志文件的名称和位置依赖与文件。可在类中直接从获取日志记录器。如:        javax.servlet.ServletContext context = getServlet().getServletContext();        context.log("日志"); 2. 使用common-logging。具体不介绍。 3. 使用common-logging和log4j的结合。下面详细介绍如何使用log4j 使用log4j进行记录 配置步骤: 1.       下载log4j的 jar 文件 2.       将jar文件复制到应用程序的WEB-INF/lib目录里 3.       配置log4j.properties。举例如下: log4j.rootLogger=WARN,Console,File   log4j.logger.cn.rolia.top.LoggingListener=INFO,Console,File   log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d %-5p %c - %m%n   log4j.appender.File=org.apache.log4j.FileAppender log4j.appender.File.file=struts-log.log log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern=%d [%t] %-5p %c - %m%n   4.  配置common-loggging.properties。举例如下:org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory 5.  在方法中使用日志功能,相关代码如下: Log log = LogFactory.getLog(LoggingListener.class); log.info("..."); 讨论 当你的应用程序出错时首先会查看日志文件。struts使用Jakarta Commons Logging API来记录日志信息。大多数用户会选择使用log4j。 大多数log4j类封状在common-logging里 配置记录器 你可以为没个类配置一个日志记录器。如: log4j.logger.org.apache.struts.action.RequestProcessor=DEBUG,Console 你也可以为package配置统一的日志记录器如: log4j.logger.org.apache.struts=DEBUG,Console,File 还可以使用一个默认的日志记录器: log4j.rootLogger=WARN,Console 如果log4j.logger没有配置就使用这个默认的日志记录器。 格式 有如下格式可供使用: org.apache.log4j.HTMLLayout(以HTML表格的形式布局) org.apache.log4j.PatternLayout(可以灵活地指定布局模式) org.apache.log4j.SimpleLayout(包含日志信息的级别和字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息) 如果使用了PatternLayout,则可以为日志指定格式。如: log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n These format specifiers result in the display of the date (%d), thread (%t), priority (%-5p), class name (%c), log message (%m), and a carriage return (%n). For a complete list of all supported format specifiers, see the documentation for the Log4J PatternLayout class. 更多格式参见API 输出目的地 输出目的地主要有以下几种: org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) ogr.agapche.log4j.DailyRollingFileAppender(每天产生一个日志文件) ogr.agapche.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) ogr.agapche.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方) 使用方法举例如下: log4j.logger.org.apache.struts=DEBUG,Console,File log4j.appender.File=org.apache.log4j.FileAppender log4j.appender.File.file=struts-log.log log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern=%d [%t] %-5p %c - %m%n   日志级别 有如下6个级别: 1.  Trace 2.  Debug 3.  Info 4,  Warn 5.  Error 6.  Fatal 一个例子 1.    先创建一个应用程序监听器类如下: LoggingListener.java package cn.rolia.top;   import javax.servlet.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class LoggingListener implements ServletContextListener{     Log log = LogFactory.getLog(LoggingListener.class);           public void contextDestroyed(ServletContextEvent arg0) {        try{            log.info("Application destroyed");        }catch(Exception e){            System.out.println("错误:");            System.out.println(e.getMessage());        }     }       public void contextInitialized(ServletContextEvent arg0) {        try{            log.info("Application initialed");        }catch(Exception e){            System.out.println("错误:");            System.out.println(e.getMessage());        }            }   }     在web.xml中配置如下:     <web-app xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   version="2.4"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">       <listener>         <listener-class>cn.rolia.top.LoggingListener</listener-class>       </listener>           ...     </web-app> 2.      配置log4j.properties如下:     log4j.rootLogger=WARN,Console,File     log4j.logger.cn.rolia.top.LoggingListener=INFO,Console     log4j.appender.Console=org.apache.log4j.ConsoleAppender     log4j.appender.Console.layout=org.apache.log4j.PatternLayout     log4j.appender.Console.layout.ConversionPattern=%d %-5p %c - %m%n     将其保存在WEB-INF/classes目录下 3.  配置commons-logging.properties: org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory     将其保存在WEB-INF/classes目录下。 完毕 启动服务器时将加载应用程序。控制台显示:如下: 2007-01-30 06:23:42,703 INFO  cn.rolia.top.LoggingListener - Application initialed log4j性能影响 使用log4j创建一个日志信息的时间开销依赖于几个因素: 1.    使用附件器的类型 2.    用于格式化信息的log4j布局 3.    创建日志信息所需的参数构造时间 4.    记录器层次架构的深度以及从何处指派日志入口点   对logging最重要的影响可能是用户试图以什么格式记录信息。SimpleLayout是快的。patternLayout为他的灵活性付出了很大代价。Log4j文档在javadoc中包含了几个PatternLayout的警告信息,指出哪些会影响系统性能。 通常在开发阶段。logging开销不是很重要。用户不必过多的考虑系统开销的问题。

阅读(2928) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册