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

log4j简介及使用举例

    博客分类:
  • java
 
阅读更多

简介

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。 

 

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 

 

此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。 


log4j的使用


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

 

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

 

1、 Loggers 

Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发 生了一个级别Q比P高,则可以启动,否则屏蔽掉。 

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

 

2、Appenders 

禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。 

其语法表示为: 

  • org.apache.log4j.ConsoleAppender(控制台) 
  • org.apache.log4j.FileAppender(文件) 
  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 
  • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 
  • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

3、Layouts 

有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供了四 种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。 

其语法表示为: 

  • org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
  • org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
  • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
  • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

 

程序举例

 

1、引入log4j

 

在pom.xml中加入依赖:

 

 <dependency > 
        <groupId >log4j </groupId > 
        <artifactId >log4j </artifactId > 
        <version >1.2.14 </version > 
    </dependency > 
    <dependency > 
        <groupId >org.slf4j </groupId > 
        <artifactId >slf4j- api</ artifactId>  
        <version >1.6.1 </version > 
    </dependency > 
    <dependency > 
        <groupId >org.slf4j </groupId > 
        <artifactId >slf4j-log4j12 </artifactId > 
        <version >1.6.1 </version > 
    </dependency > 
    <dependency > 
        <groupId >org.slf4j </groupId > 
        <artifactId >slf4j- nop</ artifactId>  
        <version >1.6.1 </version > 
    </dependency >  

 

2、配置web.xml和log4j.xml

 

1)配置web.xml,初始化日志系统

 

web.xml

 

 <context-param >
             <param-name >log4jConfigLocation </param-name >
             <param-value >/WEB-INF/log4j.xml </param-value >
    </context-param >
      <listener >
             <listener-class >org.springframework.web.util.Log4jConfigListener             </listener-class >
      </listener >

 

    2)配置log4j.xml,配置输出的log格式和输出地等

 

log4j.xml

 

<?xml version="1.0" encoding= "UTF-8" ?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 
 
<log4j:configuration>  
 
    <!-- ========================== 自定义输出格式说明================================ -->  
      <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->  
      <!-- %r 输出自应用启动到输出该log信息耗费的毫秒数  -->  
      <!-- %c 输出所属的类目,通常就是所在类的全名 -->  
      <!-- %t 输出产生该日志事件的线程名 -->  
      <!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” --> 
      <!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{ yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  --> 
      <!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)  --> 
      <!-- ========================================================================== --> 
 
      <!-- ========================== 输出方式说明================================ -->  
      <!-- Log4j提供的appender有以下几种:  -->  
      <!-- org.apache.log4j.ConsoleAppender(控制台),  --> 
      <!-- org.apache.log4j.FileAppender(文件),  --> 
      <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->  
      <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  -->  
      <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   -->  
    <!-- ========================================================================== --> 
 
      <!-- 输出到控制台  --> 
    <appender name ="myConsole" class="org.apache.log4j.ConsoleAppender"> 
        <layout class ="org.apache.log4j.PatternLayout">  
            <param name ="ConversionPattern" value= "[%p] %d{yyyy-mm-dd HH:mm:ss} %c :: %m%n"/>  
        </layout > 
        <filter class ="org.apache.log4j.varia.LevelRangeFilter">  
            <param name ="LevelMin" value="DEBUG"/>  
            <param name ="LevelMax" value="ERROR"/>  
        </filter > 
    </appender > 
 
      <!-- 输出到日志文件  --> 
    <appender name ="myspring" class= "org.apache.log4j.RollingFileAppender" > 
        <param name ="File" value="F:/icod/myspring/output/mylog.log"/> 
        <param name ="Append" value="true"/>  
        <layout class ="org.apache.log4j.PatternLayout">  
            <param name ="ConversionPattern" value= "[%p] %d{yyyy-mm-dd HH:mm:ss} %c :: %m%n"/>  
        </layout > 
    </appender > 
       
      <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中-->  
    <category name ="com.myspring.app">  
        <level value ="debug" />  
        <appender-ref ref ="myspring" /> 
    </category > 
     
    <!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->     
    <logger name ="myspringlogger" additivity="false">     
        <level value ="debug" />       
        <appender-ref ref ="myspring" />      
    </logger >    
    
    <!-- 根logger的设置-->    
    <root >    
        <level value ="debug" />    
        <appender-ref ref ="myConsole"/>
    </root >    
</log4j:configuration>
 

这里定义了控制台输出myConsole和文件输出mySpring

 

 

具体的使用这里就不多说了,直接引用log4j的类就可以了。

分享到:
评论

相关推荐

    Log4j日志管理系统简单使用说明

     禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。...

    log4j举例下载

    log4j举例

    log4jxml详细分析 例子全

    log4jxml 详细介绍 和 对比举例!

    Java自定义日志模块实现

    比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j”框架功能更强大,想切换到“sf4j”。常规的做法是,修改项目中每一处调用到“log4j”相关模块的代码。如果是项目比较大,所要花费的工作量...

    MATLAB图像处理函数大全

    语法: B = dct2(A) B = dct2(A,m,n) B = dct2(A,[m n]) 举例 RGB = imread('autumn.tif');...imshow(log(abs(J)),[]), colormap(jet(64)), colorbar J(abs(J) ) = 0; K = idct2(J)/255; imshow(K)

    大数据分析之分类算法.pdf

    (-(p1j*log2(p1j)+p2j*log2(p2j)+p3j*log2(p3j) )) 3.1公式说明: Count(Aj):年龄A第j个选项个数; j是下⾯表3五个选项任⼀ 表3 年龄记录数量表 选项 20-30 20以下 30-40 40-50 60-70 数量 5 3 3 2 3 Count(A):年龄...

    sql 的mdf文件很麻烦

     J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成  sp...

    jpivot学习总结.doc

    4. JPivot标签库使用详解 4.1. Introduce JPivot 是一套基于 Mondrian 的 OLAP 前端展现工具,它提供了一套标签库来解决的 OLAP 的展现层问题。 在一个 JSP 页面当中,如果要使用 JPivot 标签库,除了要配置相关的...

    易算器(好用的表达式、公式计算器)V1.21

    最重要的一点:从本版开始本软件全部功能完全免费使用。 【一 概述】 易算数学公式计算器 易算数学公式计算器(易算器)是一款非常简单好用的公式计算器,您可以使 用并保存带变量的公式,在运行时只需要在变量列表...

    linux vsftpd搭建步骤 亲测可用

    -A INPUT -m state --state NEW -m tcp -p -dport 40000:40080 -j ACCEPT pasv_min_port=40000 pasv_max_port=40080 #是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用) pasv_promiscuous=YES #当用户以被动...

    Toad 使用快速入门

    四、Toad使用快速入门 1. Schema Browser: Schema browser是Toad的极为有特色的模块。在schema browser的帮助下,可以方便的浏览数据库内部的各类数据库对象,比如表,索引,序列,存储过程等,而且可以方便的倒出...

    ant1.9资源

    在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。 1. copy任务 该任务主要用来对文件和目录的复制功能。举例如下: Eg1.复制单个文件: Eg2.对文件目录进行复制: Eg3. 将文件复制到另外的...

    图像增强的实现

    imshow(log(abs(J)),[8,10]) 2. 离散余弦变换的 Matlab 实现 2.1. dCT2 函数 功能:二维 DCT 变换 格式:B=dct2(A) B=dct2(A,m,n) B=dct2(A,[m,n]) 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同...

    《数据结构 1800题》

    2. 对于给定的 n个元素,可以构造出的逻辑结构有 (1)集合 , (2)线性结构 , (3)树型结构 ,_图状结构_(4)_四种。 【中科院计算所 1999 二、1(4分)】 3.数据的逻辑结构是指(数据的组织形式,即数据元素...

    HGE_系列教材(1-9)

    HGE 系列教材(1) --- 简介 HGE 是一个硬件加速(Hardware accelerated)的2D 游戏引擎(Game Engine), HGE 是一个富有特性的中间件,可以用于开发任何类型的2D 游戏。HGE 封装性良好, 以至于你仅仅需要关系游戏...

    网管教程 从入门到精通软件篇.txt

    只有在使用故障恢复控制台时,才能使用 fixboot 命令。  fixboot [drive]  参数 驱动器  将要写入引导扇区的驱动器。它将替代默认的驱动器(即用户登录的系统分区)。例如,驱动器:D:  范例  下列命令...

Global site tag (gtag.js) - Google Analytics