7

我在这个包中有包 mypack 和 MyClass。我想只记录此类的 INFO 级别并尝试使用 log4j.properties 进行设置:

log4j.debug=true
log4j.rootLogger=ALL, debugLogfile
log4j.rootCategory=, debugLogFile
#log4j.category.mypack =INFO
log4j.logger.mypack =INFO

    log4j.appender.debugLogfile=org.apache.log4j.RollingFileAppender
    log4j.appender.debugLogfile.File=mylog.log
    log4j.appender.debugLogfile.Threshold=ALL
    log4j.appender.debugLogfile.MaxFileSize=100MB
    log4j.appender.debugLogfile.MaxBackupIndex=4
    log4j.appender.debugLogfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.debugLogfile.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x - %m%n

不幸的是,类也记录了调试级别。怎么了?

我以这种方式创建记录器:

public final Logger log = Logger.getLogger(getClass());
4

5 回答 5

9

您也可以选择使用 XML 文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC 
"-//log4j/log4j Configuration//EN" "log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- console -->
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="threshold" value="ALL" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="conversionPattern"
                value="%d{yyyyMMdd-HHmmss.SSS} %-5p (%c.java:%L).%M - %m%n" />
        </layout>
    </appender>

    <!-- categories -->
    <category name="org.hibernate">
        <priority value="WARN" />
    </category>
    <category name="org.hibernate.type">
        <priority value="TRACE" />
    </category>
    <category name="mypack">
        <priority value="INFO" />
    </category>

    <!-- root -->
    <root>
        <priority value="ALL" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

使用您的设置,文件的附加程序:

<!-- file -->
<appender name="ROLLOUT" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="mylog.log" />
    <param name="maxFileSize" value="100MB" />
    <param name="maxBackupIndex" value="4" />
    <param name="threshold" value="ALL" />
    <param name="encoding" value="UTF-8" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="conversionPattern" value="%d %-4r [%t] %-5p %c %x - %m%n" />
    </layout>
</appender>

也可以看看:

于 2013-10-22T13:02:55.417 回答
6

您需要在或级别设置package logger访问权限,以实现此尝试以下操作:CategoryLogger

# make default and debugLogFile both as root category
log4j.rootCategory=, debugLogFile

# set package wide logger Level (via Category, older way)
log4j.category.mypack=INFO

# OR set package wide logger Level (via Logger, newer way)
log4j.logger.mypack=INFO

# an example of turning all apache package logs to WARN
log4j.category.org.apache=WARN
于 2013-10-22T09:25:33.760 回答
0

据我记得你可以这样指定

log4j.logger.com.proj.eqd.exo.http.filter=INFO

于 2013-10-22T09:27:39.080 回答
0

尝试

log4j.rootLogger=DEBUG,标准输出调试日志文件
log4j.logger.mypack=INFO

代替

log4j.appender.debugLogfile.mypack =INFO

设置整个应用程序的调试级别和“mypack”包的信息。

于 2013-10-22T09:25:39.147 回答
0

尝试添加这个:

log4j.logger.mypack =INFO, debugLogfile
log4j.additivity.mypack = false
log4j.rootLogger=ALL, debugLogfile

您的班级正在使用 rootLogger 的配置以及它自己的配置。通过添加可加性参数,您将避免它。

希望能帮助到你。

于 2013-10-22T11:45:16.253 回答