日志 log4j

 
日志分两种:
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开销不是很重要。用户不必过多的考虑系统开销的问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值