zoukankan      html  css  js  c++  java
  • 小学生之Log4j使用教程

    以前都是把所有日志都输出到一个文件下面,今天有个同事问想把某个包下的日志输出到

    指定的地方,于是就在网上查了一些资料,总结一下,以免以后用到。

     

     

    一、log4j是什么? 

    Log4j是一个开源的日志记录组件,其产品已经相当的成熟,且使用非常的广泛。在工程中以易用,方便等代替了System.out 等打印语句。

    Log4j的目标是:它允许开发人员以任意的精细程度控制哪些日志说明被输出。通过使用外部的配置文件,可以在运行时配置它。

    Log4j的具体在http://logging.apache.org/log4j/找到它(有使用的文档说明)。另外,log4j已经被转换成C, C++, C#, Perl, Python, Ruby, 和Eiffel 语言。

    二、通常我们建立一个

    log4j.properties文件放在src下,编译之后就生成在../web-inf/class/

    当然也可以放到其它任何目录,只要该目录被包含到类路径中即可,中定位这个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。

    Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。

    综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

    下面对三个组件分别进行说明:

    1、Loggers 

     Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG Log4j有一个规则:

    假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。 

    假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。

    其语法表示为:org.apache.log4j.ConsoleAppender(控制台)

     org.apache.log4j.FileAppender(文件)

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

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

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

    配置时使用方式为:

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

    log4j.appender.appenderName.option1 = value1 

    log4j.appender.appenderName.option = valueN 

    这样就为日志的输出提供了相当大的便利。

    3、Layouts 

    有时用户希望根据自己的喜好格式化自己的日志输出。

    Log4j可以在Appenders的后面附加Layouts来完成这个功能。

    Layouts提供了四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。 

    其语法表示为:

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

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

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

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

    配置时使用方式为:

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

    log4j.appender.appenderName.layout.option1 = value1 

    log4j.appender.appenderName.layout.option = valueN 

    Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

      %m 输出代码中指定的消息

      %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
      %r 输出自应用启动到输出该log信息耗费的毫秒数 
      %c 输出所属的类目,通常就是所在类的全名 
      %t 输出产生该日志事件的线程名 
      %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ” 
      %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似: 2002年10月18日 22:10:28,921 
      %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

     

    4 . Log4j的配置

     以上是从原理方面说明Log4j的使用方法,在具体Java编程使用Log4j可以参照以下示例:

    1、建立Logger实例:

    语法表示:public static Logger getLogger( String name) 

    实际使用:static Logger logger = Logger.getLogger(ServerWithLog4j.class.getName ())  

    2、读取配置文件:

    获得了Logger的实例之后,接下来将配置Log4j使用环境,语法表示:

    或者直接放在src下把log4j.properties文件BasicConfigurator.configure():自动快速地使用缺省Log4j环境。

    PropertyConfigurator.configure(String configFilename):读取使用Java的特性文件编写的配置文件。

    DOMConfigurator.configure(String filename):读取XML形式的配置文件。

    实际使用:PropertyConfigurator.configure("ServerWithLog4j.properties"); 

  • 相关阅读:
    解决SecureCRT中文显示乱码
    能大大提升工作效率和时间效率的9个重要习惯
    PHP基础知识
    CI学习相关地址
    IE8引入JavaScript
    IE9以下不支持placeholder属性
    IE8浏览器兼容性问题
    简单的DOS命令
    Linux常用运维指令
    log4j日志+面向切面监控异常
  • 原文地址:https://www.cnblogs.com/1600kun/p/4909538.html
Copyright © 2011-2022 走看看