要分级,必须用xml格式的配置文件,里面有过滤器设置的。

解决方案 »

  1.   

    给你看个例子,我的一个项目中的,我想就不用多具体解释了吧,一看就明白:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="CON" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
    value="%-5p %F (line:%L) - %m%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="levelMin" value="DEBUG" />
    <param name="levelMax" value="ERROR" />
    <param name="AcceptOnMatch" value="true" />
    </filter>
    </appender> <appender name="INFOLOG"
    class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Append" value="true" />
    <param name="File" value="../webapps/ROOT/teyes_info_log.htm" />
    <param name="DatePattern" value="yyyy-MM-dd" />
    <layout class="org.apache.log4j.HTMLLayout" />
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="levelMin" value="INFO" />
    <param name="levelMax" value="INFO" />
    <param name="acceptOnMatch" value="true" />
    </filter>
    </appender>

    <appender name="ERRLOG"
    class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Append" value="true" />
    <param name="File" value="../webapps/ROOT/teyes_err_log.htm" />
    <param name="DatePattern" value="yyyy-MM-dd" />
    <layout class="org.apache.log4j.HTMLLayout" />
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="levelMin" value="ERROR" />
    <param name="levelMax" value="ERROR" />
    <param name="acceptOnMatch" value="true" />
    </filter>
    </appender>
    <logger name="com.ebt.tsef" additivity="false">
    <level value="DEBUG" />
    <appender-ref ref="CON" />
    <appender-ref ref="ERRLOG" />
    <appender-ref ref="INFOLOG" />
    </logger>
    <logger name="com.cddx.teyes" additivity="false">
    <level value="DEBUG" />
    <appender-ref ref="CON" />
    <appender-ref ref="ERRLOG" />
    <appender-ref ref="INFOLOG" />
    </logger>
    <root>
    <level value="FATAL" />
    <appender-ref ref="ERRLOG" />
    </root>
    </log4j:configuration>
      

  2.   

    logger name="com.cddx.teyes" 这个就可以分模块(我的理解就是分包?对吗?看你的具体需求了。)其实就是一个前缀匹配。
      

  3.   

    经典, 开了眼界, 以前看 log4j.properties 多简单, 以为那个 log4j.xml 又复杂又多余的.孤陋寡闻啊.
      

  4.   

    分模块输出,还找到一种方法:
    配置文件如下 : 
    log4j.root=DEBUG, console
    log4j.category.db=DEBUG,console,dbfilelog
    log4j.category.app=DEBUG, console, appfilelog#定义console appenderlog4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d{ISO8601}:%6r:%p:%m%n#定义db的appender
    log4j.appender.dbfilelog=org.apache.log4j.RollingFileAppender
    log4j.appender.dbfilelog.layout=org.apache.log4j.PatternLayout
    log4j.appender.dbfilelog.layout.ConversionPattern=%d{ISO8601}:%r:%p:%m:%c:%t:%l%n
    log4j.appender.dbfilelog.File=D:/database.log
    log4j.appender.dbfilelog.MaxFileSize=10MBlog4j.appender.dbfilelog.MaxBackupIndex=10#定义application的appender
    log4j.appender.appfilelog=org.apache.log4j.RollingFileAppender
    log4j.appender.appfilelog.layout=org.apache.log4j.PatternLayout
    #log4j.appender.appfilelog.layout.ConversionPattern=%d{ISO8601}:%r:%p:%m:%c:%t:%l%n
    log4j.appender.appfilelog.File=D:/application.log
    log4j.appender.appfilelog.MaxFileSize=10MB
    log4j.appender.appfilelog.MaxBackupIndex=10
    调用时用:
    Logger.getLogger("category.db");//声明db的logger
    Logger.getLogger("category.app");//声明app的logger
      

  5.   

    分级必须用xml格式的。给你一段文章,你一看就明白。
    -----Original Message-----
    From: Kevin Dougan [mailto:[EMAIL PROTECTED] 
    Sent: 2003年10月9日 21:05
    To: Log4J Users List; [EMAIL PROTECTED]
    Subject: RE: log4j.properties - How to parse outpu to multiple filesSimple!
    Just add one "LevelMax" line, immediately after the "LevelMin" line, to
    log4j.xml:<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>        <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
                    <layout class="org.apache.log4j.PatternLayout">
                         <param name="ConversionPattern" value="%c %d{ISO8601}
    -- %p -- %m%n"/>
                    </layout>
            </appender>        <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="C:\\logs\\app-debug.log"/>
          <param name="Append" value="true"/>
          <param name="MaxFileSize" value="500KB"/>
          <param name="MaxBackupIndex" value="2"/>
                    <layout class="org.apache.log4j.PatternLayout">
                         <param name="ConversionPattern" value="%c %d{ISO8601}
    -- %p -- %m%n"/>
                    </layout>
                    <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="LevelMin" value="DEBUG" />
                            <param name="LevelMax" value="DEBUG" />
                    </filter>
            </appender>        <appender name="INFO" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="C:\\logs\\app-info.log"/>
          <param name="Append" value="true"/>
          <param name="MaxFileSize" value="500KB"/>
          <param name="MaxBackupIndex" value="2"/>
                    <layout class="org.apache.log4j.PatternLayout">
                         <param name="ConversionPattern" value="%c %d{ISO8601}
    -- %p -- %m%n"/>
                    </layout>
                    <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="LevelMin" value="INFO" />
                            <param name="LevelMax" value="INFO" />
                    </filter>
       </appender>        <appender name="WARN" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="C:\\logs\\app-warn.log"/>
          <param name="Append" value="true"/>
          <param name="MaxFileSize" value="500KB"/>
          <param name="MaxBackupIndex" value="2"/>
                    <layout class="org.apache.log4j.PatternLayout">
                         <param name="ConversionPattern" value="%c %d{ISO8601}
    -- %p -- %m%n"/>
                    </layout>
                    <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="LevelMin" value="WARN" />
                            <param name="LevelMax" value="WARN" />
                    </filter>
       </appender>        <appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
          <param name="File" value="C:\\logs\\app-error.log"/>
          <param name="Append" value="true"/>
          <param name="MaxFileSize" value="500KB"/>
          <param name="MaxBackupIndex" value="2"/>
                    <layout class="org.apache.log4j.PatternLayout">
                         <param name="ConversionPattern" value="%c %d{ISO8601}
    -- %p -- %m%n"/>
                    </layout>
                    <filter class="org.apache.log4j.varia.LevelRangeFilter">
                            <param name="LevelMin" value="ERROR" />
                            <param name="LevelMax" value="ERROR" />
                    </filter>
       </appender>        <root>
                    <priority value="debug"/>
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="DEBUG"/>
            <appender-ref ref="INFO"/>
            <appender-ref ref="WARN"/>
            <appender-ref ref="ERROR"/>
            </root></log4j:configuration>-----Original Message-----
    From: Yu Xiang Xi (Maveo) [mailto:[EMAIL PROTECTED]
    Sent: October 9, 2003 5:07 AM
    To: 'Log4J Users List'
    Subject: RE: log4j.properties - How to parse outpu to multiple files
    Setting Threshold=ERROR can force log4j to log the higher priority loggings
    of ERROR & FATAL, as demonstrated by Adrian Janssen said below.But I'm wondering to know if there's a way to log only ERROR loggings, no
    FATAL in one appender. That is, one appender to log only one level; not to
    log one level and its higher levels.Xi Yuxiang
    System Architect
    Maveo Systems Limited