D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

log4j和jboss

Posted on 2008-12-22 18:28 巴西木 阅读(1195) 评论(0)  编辑 收藏 引用 所属分类: Java
首先认识一下log4j: 
一.Log4j的基本概念
1.Logger: 日志记录器.
日志的级别 级别越低 日志记录将更详细
级别有(由高到底)off,fatal,error,warn,info,debug,all 级别高的可覆盖级别低的日志输出
2.Appender: 输出端 指定日志输出到那个地方.一个Logger可以有多个Appender输出端,每个Appender输出端也可以被多个Logger使用.
常用的输出端有:
ConsoleAppender 将日志输出到控制台
org.apache.log4j.rolling.RollingFileAppender 可指定文件和日期的输出端
WriterAppender 将日志以流格式发送到任何指定的地方
JDBCAppender 通过JDBC把日志输出到数据库中
3.Layout: 日志格式化
log4j有三种Layout:
HTMLLayout 格式化日志输出为HTML表格;
PatternLayout 根据指定的格式(ConversionPattern)格式化日志输出(常用)
SimpleLayout 以非常简单的方式输出

二.配置
1. log4j的配置文件 log4j.xml 
 1<?xml version="1.0" encoding="UTF-8" ?>  
 2<!DOCTYPE configuration >  
 3<configuration xmlns='http://logging.apache.org/' debug="true">  
 4  
 5    <!-- 把日志输出到控制台中 -->  
 6    <appender name="console" class="org.apache.log4j.ConsoleAppender">  
 7        <layout class="org.apache.log4j.PatternLayout">  
 8            <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L)  %m%n" />  
 9        </layout>  
10    </appender>  
11       
12    <!-- 把日志按日期输出到日期日志文件中 -->  
13    <appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">  
14        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">  
15            <param name="FileNamePattern" value="${catalina.home}/log4jlogs/mywebsite.%d{yyyy-MM-dd}.log.zip" />  
16        </rollingPolicy>  
17        <layout class="org.apache.log4j.PatternLayout">  
18            <param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} %p [%t] %C{2} (%F:%L) - %m%n" />  
19        </layout>  
20    </appender>  
21       
22  
23    <!-- 终端日志文件 -->  
24    <appender name="terminal-logger" class="org.apache.log4j.DailyRollingFileAppender">  
25        <param name="File" value="${catalina.home}/logs/kiosks/TerminalService.log" />  
26        <param name="Append" value="true" />  
27        <layout class="org.apache.log4j.PatternLayout">  
28            <param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} [%p] [%t] (%F:%L): %m%n" />  
29        </layout>  
30        <filter class="org.apache.log4j.varia.LevelRangeFilter">  
31            <param name="levelMin" value="INFO" />  
32            <param name="AcceptOnMatch" value="true" />  
33        </filter>  
34    </appender>  
35    <logger name="com.macaufly.kiosks">  
36        <level value="INFO" />  
37        <appender-ref ref="terminal-logger" />  
38    </logger>  
39  
40               
41    <!-- 设置接收所有输出的通道(但在logger中定义的级别在这里不起作用) -->  
42    <root>  
43        <level value="debug" /><!-- 设置级别 -->  
44        <appender-ref ref="console" />  
45    </root>  
46    <!--   
47        设置域名限制,即 com.dchaoxiong.studentmanage.servlets   
48        包及以下的日志均输出到下面指定的通道(appender-ref)中   
49    -->  
50    <logger name="com.dchaoxiong.studentmanage.servlets">  
51        <level value="debug" /> <!-- 设置级别 -->  
52        <appender-ref ref="ROLL" /><!-- 与前面的通道id相对应 -->  
53    </logger>  
54</configuration> 
2. 把该配置文件放在工程的类路径下
3.private Logger logger = Logger.getLogger(ClassName.class);取得loger类


在log4j中定义了5个级别的日志等级:
  • ERROR - A definite problem (最少)
  • WARN - Likely a problem, but can live with it
  • INFO - Common notifications, lifecycle stuff
  • DEBUG - Low volume debug
  • TRACE - High volume debug (最多)

     

    今天解决的问题是如何不让jboss在后台打出过多的信息:

    开始还以为是自己的log4j打出来的,居然连hibernate连数据库的密码都打出来,狂汗;
    后来改了一通自己的log4j.xml,一点作用都没起,一查,原来自己的log4j都没有启用,瀑布汗;
    于是,把矛头指向jboss,搜索“log4j”,出来三个log4j.xml,其中有一个在defaul下面的应该是我用到的;
    修改一通,把org.hibernate的设置为error,噢耶,小功告成。

    总结一下:
    1.jboss里面默认带了log4j的
    2.据说,如果项目中也启用log4j,可能会和jboss的冲突;
    3.jboss中的log4j也不知道是哪个版本的,我们平常使用的<logger>元素在那里是要用<category>的;
    4.想把项目的log输出到file,而其他的都依然console&file,还没成功,ps:只是现在还没成功,最终应该是没有问题的。

    最后,Aramil提供了一个文档,也许能解决更多疑惑:JBossLog4j.zip

  • 只有注册用户登录后才能发表评论。