Struts与 Apache通用日志包

为什么要记录日志

1.       监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析工作

2.       跟踪代码运行时轨迹,作为日后审计依据

3.       担当集成开发环境中的调试器,向文件或控制台打印代码的调试信息

Apache通用日志包概述

Apache通用日志包(Commons Logging package)Apache的一个开放源代码项目,它提供了一组通用的日志接口,用户可以自由地选择实现日志接口的第三方软件,通用日志接口目前支持以下日志实现

L og4j 日志器

JDK 1.4 Logging 日志器

SimpleLog 日志器 (把日志消息输出到标准的系统错误流System.err)

NoOpLog 日志器 (不输出任何日志消息)

通用日志包中的两个常用接口为LogFactoryLog

Log接口

org.apache.commons.logging.Log 接口代表日志器,它提供了一组输出日志的方法

fatal(Object message):

error(Object messages):

warn(Object messages):

info(Object messages):

debug(Object messages):

trace(Object messages):

Log接口还提供了一组判断是否允许输出特定级别的日志消息的方法

isFatalEnabled()

isErrorEnabled()

isWarnEnabled()

isInfoEnabled()

isDebugEnabled()

isTraceEnabled()

在程序中输出某种级别的日志消息之前,提倡先调用以上方法来判断该日志级别的日志是否允许输出,这有助于提高应用的性能

LogFactory 接口

org.apache.commons.logging.LogFactory 接口提供了获得日志器实例的两个静态方法

public static Log getLog(String name) throws LogConfigurationException;

public static Log getLog(Class class) throws LogConfigurationException;

常用的日志实现

指定日志器

通用日志接口从名为commons-logging.properties的属性文件中获取实现日志接口的日志信息   org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog

Log4J 日志器

配置Log4J,需要分别设置它的Logger,AppenderLayout的属性

1.      配置Logger组件

Logger组件支持继承关系,所有的Logger 组件都直接或间接继承rootLogger.配置rootLogger的语法为

log4j.rootLogger=[priority],appenderName,appenderName,….

Priority是日志级别,可选值包括OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACEALL

appenderName指定Appender组件,用户可以同时指定多个Appender组件.

log4j.rootLogger=INFO,console,file

2.      配置Appender组件

配置日志消息输出目的地Appender,其语法为

log4j.appender.appenderName=fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1=value1

log4j.appender.appenderName.option2=value2

……

log4j.appender.appenderName.optionN=valueN

Log4J 提供的Appender 有以下几种

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定大小时产生一个新的文件)

org.apache.log4j.WriterAppender(将日志消息以流格式发送的任意指定的地方)

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=log.txt

3 配置Layout组件

配置Layout组件的语法为

log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1=value1

log4j.appender.appenderName.layout.option2=value2

……

log4j.appender.appenderName.layout.optionN=valueN

Log4J 提供的Layout有以下几种

org.apache.log4j.HTMLLayout(HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志消息的级别和信息字符串)

org.apache.log4j.TTCCLayout(包含日志产生的时间,线程和类别等信息)

PatternLayout 可以让开发者依照ConversionPattern去定义输出格式

PatternLayout的格式

%r   自程序开始后消耗的毫秒数

%t   表示日志记录请求生成的线程

%p   表示日志语句的优先级别

%r   与日志请求相关的类别名称

%c   日志消息所在的类名

%m%n表示日志消息的内容

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%t %p - %m%n

 

Log4J的配置样本

##LOGGERS##

#define a logger named helloAppLogger

log4j.rootLogger=INFO,console,file

##APPENDERS##

#define an appender named console,which is set to be a ConsoleAppender

log4j.appender.console=org.apache.log4j.ConsoleAppender

#define an appender named file,which is set to be a RollingFileAppender

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=log.txt

 

##LAYOUTS##

#assign a SimpleLayout to console appender

log4j.appender.console.layout=org.apache.log4j.SimpleLayout

#assign a PatternLayout to file appender

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%t  %p -- %m%n

Log4J对应用性能的影响

日志输出的目的地: 例如把日志输出到控制台的速度和输出到文件系统的速度是不一样的

日志输出格式:     例如采用SimpleLayout输出日志消息比采用PatternLayout简单,因此速度更快

日志级别: 日志级别设置得越低,输出的日志内容越多,对性能的影响也很大    

JSP中访问通用日志接口

Apache提供了一个客户化Log标签库,通过它可以在Jsp文件中方便地访问通用日志接口,无需编写程序代码.使用Log标签库的前提条件是通用日志接口必须采用Log4J作为实现接口.

<%@  taglib uri=”/WEB-INF/taglibs-log.tld” prefix=”log” %>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值