Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
log4j基本配置_Log4j - Fatal编程技术网

log4j基本配置

log4j基本配置,log4j,Log4j,我使用log4j记录应用程序中的一些步骤。为了快速和肮脏,我使用了: org.apache.log4j.BasicConfigurator.configure(); 这将在Eclipse控制台中输出我的日志 我想知道是否以及如何设置高于调试的级别阈值?换句话说,我不想显示调试级别的消息,只想显示ERR、WARN和INFO 多谢各位 编辑: 我可以用下面这个吗 import org.apache.log4j.Logger; import org.apache.log4j.Level; [...]

我使用log4j记录应用程序中的一些步骤。为了快速和肮脏,我使用了:

org.apache.log4j.BasicConfigurator.configure();
这将在Eclipse控制台中输出我的日志

我想知道是否以及如何设置高于调试的级别阈值?换句话说,我不想显示调试级别的消息,只想显示ERR、WARN和INFO

多谢各位

编辑: 我可以用下面这个吗

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
[...]
Logger logger = Logger.getLogger(this.class);
logger.setLevel(Level.INFO);
1) 找到您的appender,您应该在log4j.xml配置文件中有类似的内容

    <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/logs/rmDebug.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1500KB"/>
    <param name="MaxBackupIndex" value="2"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="**FOOBAR** %d{dd.MM.yyyy HH:mm:ss} %c  %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="FATAL" />
    </filter>
</appender>

您看到levelMin和LevelMax值了吗?levelMin是开始记录日志的地方,levelMax是停止记录日志的地方。(使用此特定的附加器)。你可以有几个附件

然后,将此追加器分配给类或包。你可以这样做:

    <category name="com.foobar.automation.doremiResourceManager" additivity="true">
    <appender-ref ref="DEBUG"/>
</category> 

我认为最简单的方法是:

    Logger.getRootLogger().setLevel(Level.INFO);

假设在调用任何记录器之前调用BasicConfigurator.configure():

您可以使用以下任一配置文件进行更改,而无需重新编译:

log4j.properties log4j.xml:


其中一个必须在命令行上。

BasicConfigurator.configure()所做的是将根记录器添加到ConsolePender,并将appender布局设置为具有模式“%r[%t]-5p%c-%m%n”的PatternLayout。因此,您需要设置根记录器的级别。如果仅设置此类记录器的级别,则根记录器的级别保持不变,那么所有其他记录器(此类除外)仍可能使用根记录器的级别,因此您仍将看到不需要的日志

org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO);

请参阅。

如果未在属性文件内配置,请使用以下选项:

Logger root = Logger.getRootLogger();
root.setLevel(Level.INFO);
root.addAppender(new ConsoleAppender(
        new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));

这就是重点:我不想让配置文件让我厌烦。此外,我知道log4j.properties配置文件,但不知道log4j.xml配置文件…Logger.setLevel(…)和Logger.getRootLogger().setLevel(…)之间有什么区别?通常每个类都有自己的Logger。这些伐木工人形成了一个等级制度。根记录器是此层次结构根目录下的特殊记录器。在根记录器上设置级别会影响所有记录器(如果未显式重写)。在类的记录器上设置级别只会影响类的日志语句。
org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO);
Logger root = Logger.getRootLogger();
root.setLevel(Level.INFO);
root.addAppender(new ConsoleAppender(
        new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));