`
mrzhangtufu
  • 浏览: 60826 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

log4j--日志操作方法

    博客分类:
  • j2se
阅读更多

  1.1准备工作
  一、Tomcat已正确配置与使用。
  二、软件下载:log4j------http://www.apache.org/dist/jakarta/log4j/jakarta-log4j-1.2.8.zip
  
  1.2. Log4j简介
  在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。本文介绍的Log4j版本是1.2.8,怎样通过一个配置文件来灵活地进行配置,主要的应用平台是Tomcat4.


  
  1.3、Log4j的配置
  首先到jakarta下载一个log4j的组件。把jakarta-log4j-1.2.8\dist\lib下的log4j-1.2.8.jar文件copy到classpath指定的目录下!可以是Tomcat的common\lib目录下,也可以是你需要用到log4j的application下的lib目录。
  1.4在Application目录下的web.xml文件加入以后代码
  <servlet>
  <servlet-name>log4j</servlet-name>
  <servlet-class>com.apache.jakarta.log4j.Log4jInit</servlet-class>
  <init-param>
  <param-name>log4j</param-name>
  <param-value>/WEB-INF/log4j.properties</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
  
  这段代码的意思是说,在Tomcat启动时加载com.apache.jakarta.log4j.Log4jInit这个名叫Log4jInit.class这个类文件。其中Log4jInit.class的源代码如下
  
  package com.apache.jakarta.log4j;
  import org.apache.log4j.PropertyConfigurator;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest; 网管联盟bitsCN_com
  import javax.servlet.http.HttpServletResponse;
  public class Log4jInit extends HttpServlet {
  
  public void init() {
  String prefix = getServletContext().getRealPath("/");
  String file = getInitParameter("log4j");
  // if the log4j-init-file is not set, then no point in trying
  System.out.println("................log4j start");
  if(file != null) {
  PropertyConfigurator.configure(prefix+file);
  }
  }
  public void doGet(HttpServletRequest req, HttpServletResponse res) {
  }
  }
  这段代码很简单,可以看出,在加载的过程中,程序会读取/WEB-INF/log4j.properties这个文件
  这个文件就是本文的重点,也就是log4j的配置文件。
  
  # Set root logger level to DEBUG and its only appender to A1
  #log4j中有五级logger
  #FATAL 0
  #ERROR 3
  #WARN 4
  #INFO 6
  #DEBUG 7
  #配置根Logger,其语法为:
  #log4j.rootLogger = [ level ] , appenderName, appenderName, …
  log4j.rootLogger=INFO, A1 ,R
中国网管联盟bitsCN.com


  #这一句设置以为着所有的log都输出
  #如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL
  #被输出,DEBUG,INFO将被屏蔽掉.
  # A1 is set to be a ConsoleAppender.
  #log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等
  #ConsoleAppender输出到控制台
  log4j.appender.A1=org.apache.log4j.ConsoleAppender
  # A1 使用的输出布局,其中log4j提供4种布局. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
  #org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  #org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  #org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
  
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  #灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
  #d 时间 ....
  log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
  #R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。
  log4j.appender.R=org.apache.log4j.RollingFileAppender
  #日志文件的名称
  log4j.appender.R.File=log4j.log
  #日志文件的大小
  log4j.appender.R.MaxFileSize=100KB
  # 保存一个备份文件
  log4j.appender.R.MaxBackupIndex=1
  
  log4j.appender.R.layout=org.apache.log4j.TTCCLayout
  #log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
  
  配置以这里就差不多了,如果你想更深入了解配置文件的各个细节,可以去查看docs。还有,在文章的最后面我们提供配置文件中一些主要的语法。下面我们来看看怎样在程序中使用log4j.
  
  1.4 Log4j的使用
  使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
  public static Logger getLogger( String name),
  必须在使用前要把这个类导入
  import org.apache.log4j.Logger;
  
  name一般是类文件的名字,如下:
  static Logger logger = Logger.getLogger ("".class.getName () ) ;
  
  您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下: 网管网www_bitscn_com
  logger.debug ( Object message ) ;
  logger.info ( Object message ) ;
  logger.warn ( Object message ) ;
  logger.error ( Object message ) ;
  
  为什么这里要分级别的呢?试想一下,我们在写程序的时候,为了调试程序,会在很多会出错的地方加入大量的logger.info();信息。当然程序调试完毕,我们不需要这些输出信息了,那怎么办呢?以前的做法是把每个程序中的logger.info删除,但这是不现实的,如果程序不大还可以,但如果程序很多,做这些事情就很烦人了。但因为log4j分级别了,当我们不需要输出这样调试时用到的log.info()时,我们可以把输出的级别调高,如调到warn,或error级别,这样info级别及以下的级别就不会出输出了,是不是很方便的呢?
  
  其实除了这种使用方式,log4j还有其它的使用方面,不需要配置文件,直接在程序中定义输入出级别,层次等信息,如果要了解这方法的使用,可以参考文档。
  
  1.5、附注:
  以下是配置文件的一些重要的语法
  定义配置文件
  
  其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。
  
  Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法: 网管联盟bitsCN_com
  
  配置根Logger,其语法为:
  
  log4j.rootLogger = [ level ] , appenderName, appenderName, …
  其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
  appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
  
  配置日志信息输出目的地Appender,其语法为
  
  log4j.appender.appenderName = fully.qualified.name.of.appender.class
  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(将日志信息以流格式发送到任意指定的地方)
  //往数据库中加入日志
  log4j.appender.R=org.apache.log4j.jdbc.JDBCAppender
  log4j.appender.R.URL=jdbc:mysql://localhost/log
  log4j.appender.R.username=root
  log4j.appender.R.password=
  log4j.appender.R.sql=INSERT INTO TEST (msg) VALUE ('%d -%c -&m')
  log4j.appender.R.layout=org.apache.log4j.PatternLayout
  
  配置日志信息的格式(布局),其语法为:
  
  log4j.appender.appenderName.layout = fully.qualified

分享到:
评论

相关推荐

    log4j中配置日志文件相对路径方法分析

    log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...

    使用Log4j进行日志操作

    在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的...

    log4j将记录日志保存到数据库

     系统必须是使用LOG4J进行日志管理,否则方法无效。 系统必须包含commons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号。  二、操作步骤  1、创建日志表 要把日志持久化,必须在数据库中创建一张...

    log4j日志写入mongodb

    java工程,可以直接导入到Eclipse并执行看到结果,经过调试和测试。其中包含一个操作mongoDB的工具类和Test类,方法均进过了测试。可考虑在此基础添加消息队列等其他手段提升mongoDB的写入能力

    log4j与commons-logging-1.0.4.jar

    log4j 与commonslogging,搭配记录日志是现在最流行的记录日志的方法,两者搭配不仅没有增加日志记录的难度,反而大大简化了记录日志的操作。

    yarn-auditlog-parser:Yarn的hdfs-audit.log的日志文件解析,从ip,用户名,时间段维度对hdfs的qps量进行统计

    yarn-auditlog-parser Yarn的hdfs-audit.log的日志文件解析,从ip,用户名,时间段维度对hdfs的qps量进行统计 原理介绍 此工具用于分析hdfs-audit日志文件中的hdfs请求,比如下面是一条完整的记录 2015-09-09 05:29:54...

    实时查看日志文件的工具

    该工具是绿色版的,可以实时查看程序中的日志...tail -f /applog/ebizlog/lywx/log4j_lywx.log(该目录为ftp上的日志路径) 就可实时看到操作的日志了。当然也可以通过ftp工具直接在该目录下找到日志文件,下载查看。

    SSM:Spring+Springmvc+Mybatis框架,后续集成日志插件log4j、logback,集成Druid连接池监控,集成Redis缓存,office文件操作插件poi

    构建Spring+Springmvc+Mybatis框架,丰富框架的功能,后续集成日志插件log4j、logback,集成Druid连接池监控,集成Redis缓存,office文件操作插件poi等。 1.基于mvc实现基本的数据增删改查操作。 2.已经分别集成log4...

    log4Net详解(共2讲)

    4、项目实战篇: Extjs3.2+ASP.NET七层架构+设计模式+ log4j+WebSerice等技术国讯教育通用智能OA办公平台 适用对象 1、要求有一定的javascript语言和HTML,CSS基础的学员 2、有一定的Asp.net网页编程基础和C#语言...

    精髓Oralcle讲课笔记

    --(函数round() 进行四舍五入操作) 35、select round(23.232, 2) from dual; --(四舍五入后保留的小数位数 0 个位 -1 十位) 36、select to_char(sal, '$99,999.9999')from emp; --(加$符号加入千位分隔符,保留...

    Advanced Bash-Scripting Guide <>

    J. History Commands K. A Sample .bashrc File L. Converting DOS Batch Files to Shell Scripts M. Exercises M.1. Analyzing Scripts M.2. Writing Scripts N. Revision History O. Mirror Sites P. To Do List Q...

    如何编写批处理文件批处理文件批处理文件

    参数替代默认解析操作。这个带引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为: eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这...

    Spring Cloud Finchley SR2全套(集成Spring Gateway)

    &lt;artifactId&gt;log4j-slf4j-impl Redis二次封装的这个项目主要实现了自动延期的功能,可以在配置的时候设置某些缓存是否需要自动延期&lt;默认为ture&gt;,自动延期的将会在获取的时候重置 过期时间来达到自动延期功能。...

    python写日志文件操作类与应用示例

    还是用通常的写日志的方法,比如在 java 中,经常可以看到 log4j,sf4j,logback等三方组件来写日志。 在python中如何实现呢,其实python 本身也带了日志操作的库。可以直接使用。这里我把在项目中用到的整理了一下,...

    Spark安装使用教程PDF

    Spark 安装使用教程 PDF Spark 是一个基于内存的计算引擎,可以快速地处理...Spark 安装使用教程 PDF 中介绍了 Spark 的安装、使用和配置方法,包括 SparkContext、RDD、SparkConf 和 Log4j 等关键组件的使用方法。

    java 获得的系统时间与操作系统的时间不一致

     3.log4j日志的时间与与系统相差 相差8个小时  上述问题其实是同一个问题。  原因:java获得的时区跟系统的时区不一样  解决方法如下:  1.在代码前加上下面这句话行了:TimeZone tz =TimeZone....

    java导出oracle数据(单表)

    Java 导出 Oracle 数据(单表) 在本资源中,我们将讨论...该资源涵盖了多种技术点,例如 Java 连接 Oracle 数据库、拼装 DOS 命令、执行 DOS 命令、处理错误、使用 StringUtil 工具类、使用 Log4j 记录日志信息等。

    Linux高级bash编程

    J. History Commands K. A Sample .bashrc File L. Converting DOS Batch Files to Shell Scripts M. Exercises M.1. Analyzing Scripts M.2. Writing Scripts N. Revision History O. Mirror Sites P. To Do ...

    MySQL 5.1参考手册

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    大学生社团互动平台改良版(ssh+ext+JFreechart+报表+mysql)

    用log4j实现日志管理,在E盘生成scstanddd.log的日志文件,用自定义的过滤器实现了权限管理。后台是Ext管理,超酷的界面。后台一个照片管理可以放大图片,超帅,前台的社团申请会在D盘jasper文件夹下生产相应的pdf...

Global site tag (gtag.js) - Google Analytics