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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19513812/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 17:54:45  来源:igfitidea点击:

Log4j setting log level for individual class

javalog4j

提问by vico

I have package mypack and MyClass in this package. I would like to log just INFO level for this class and trying to set it using log4j.properties:

我在这个包中有包 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

Unfortunately class logs DEBUG level also. What is wrong?

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

I create logger in this way:

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

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

采纳答案by harsh

What you need is to set packageloggeraccess at Categoryor Loggerlevel, to achive this try following :

您需要packageloggerCategoryLogger级别设置访问权限,以实现此尝试,请执行以下操作:

# 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

回答by Oleksandr Tarasenko

Try

尝试

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

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

instead of

代替

log4j.appender.debugLogfile.mypack =INFO

log4j.appender.debugLogfile.mypack =INFO

To set DEBUG level for whole app and INFO for 'mypack' package.

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

回答by Pratik Shelar

As far as i remember you can specify it like this

据我记得你可以像这样指定它

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

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

回答by richardtz

try adding this :

尝试添加这个:

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

Your class is using the config for the rootLogger and also its own. By adding the additivity parameter, you will avoid it.

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

Hope it helps.

希望能帮助到你。

回答by Paul Vargas

You could also choose to use the XML file.

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

With your settings, the appender to the file:

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

<!-- 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>


See also:

也可以看看: