Java Log4j为单个类设置日志级别

Java Log4j为单个类设置日志级别,java,log4j,Java,Log4j,我在这个包中有mypack和MyClass包。我只想记录该类的信息级别,并尝试使用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.lo

我在这个包中有mypack和MyClass包。我只想记录该类的信息级别,并尝试使用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());

您需要在
类别
记录器
级别设置
程序包
记录器
访问权限,以实现以下目的:

# 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
试试

log4j.rootLogger=DEBUG,stdoutdebugLogfile
log4j.logger.mypack=INFO

而不是

log4j.appender.debugLogfile.mypack=INFO


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

据我所知,您可以这样指定它

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

尝试添加以下内容:

log4j.logger.mypack =INFO, debugLogfile
log4j.additivity.mypack = false
log4j.rootLogger=ALL, debugLogfile
您的类正在使用rootLogger的配置以及它自己的配置。通过添加additivity参数,您可以避免它


希望有帮助。

您也可以选择使用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>



  • 我已使用新配置更新了我的问题,但这没有帮助。删除空格
    mypack=INFO
    ,不确定空格是否由
    log4j
    修剪,在第一行放置
    log4j.debug=true
    ,因此这将为您提供进一步的调试详细信息。另外,您如何使用记录器?我假设您有类似于
    Logger=Logger.getLogger(“mypack”)
    的代码,用于像我一样对问题如何将类似的log4j属性设置为可接受的答案感到困惑的人,但仍然作为一个问题提问:该问题使用答案中提到的属性进行了多次编辑。
    <!-- 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>