当前位置: 首页 > 知识库问答 >
问题:

条件log4j。xml应用模式

袁琪
2023-03-14

因为%C和%M是资源密集型的

%d{yyyy-MM-dd HH:MM:ss}[%C][%M][%t]

我希望%C和%M只有在日志级别设置为调试(或更详细的级别)时才有效。

log4j是否对这种条件输出格式有任何规定?

共有2个答案

柯曜文
2023-03-14

您可以使用另一个记录器,将调试级别设置为additivity=“false”,与只接受调试或更低级别的ThresholdFilter相结合。不过,这需要做一些工作。如果这不起作用,就提出问题。

卞琨
2023-03-14

与Matt之前的建议类似,您还可以将过滤器附加到日志附加器,并将多个附加器附加到单个记录器。例如:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%C][%M][%t] - %m%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMax" value="DEBUG" />
    </filter>
</appender>

<appender name="console2" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] - %m%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
    </filter>
</appender>

<root>
    <priority value="debug" />
    <appender-ref ref="console" />
    <appender-ref ref="console2" />
</root>

</log4j:configuration>

这将输出所需的模式。第一个appender上的max-level过滤器应防止出现高日志级别,第二个appender上的min-level过滤器应防止调试级别语句出现两次。

希望这有帮助。

 类似资料:
  • 问题内容: 我想使用新的Log4J 2-Java Logging Framework。一切正常,但是一个小时以来,我尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认软件包中。 将log4j2.xml文件移动到项目中的任何位置 将log4j2.xml文件命名为“ log4j.xml

  • 问题内容: 我已经实现了一个Modal组件,该组件在屏幕上显示一个模态对话框。通常,模态将有条件地显示。我可以通过两种方法在render函数中执行此操作: 在Modal组件中,我使用this.props.show为其自身添加了一个不同的类。如果为假,它将添加display:none以隐藏模式。 另一种方式是这样的: 这用于确定是否在渲染中添加Modal。 我想找出的是: 这两种方式有何不同? 其中

  • 我使用log4j进行日志记录,并且使用.log格式的所有日志文件,其结构简单,如; log4j.rootcategory=info,C,R log4j.appender.c=org.apache.log4j.consoleappender log4j.appender.c.layout=org.apache.log4j.patternlayout log4j.appender.r.layout=o

  • 主要内容:把日志输出到文件,把日志输出到控制台和文件Log4J支持两种文件格式的配置,一种是log4j.properties,一种是log4j.xml。在本节中,我们将看到如何使用 XML 配置 log4j。 在“Log4j 入门案例”中,我们解释了如何使用properties属性文件配置 log4j。在这里,除了我们使用 XML 配置文件之外,一切都保持不变。 以下代码显示了对应的 log4j.xml 文件: 要使用 xml 文件配置 log4j

  • 我有这样的validLog4jXML字符串 我尝试运行以下代码: 在最后一行,我得到了例外: 我试图查看关于VTD-XML的文档,它说: 为避免此异常: com.ximpleware。XPathParseException:未找到前缀xyz的URL 确保创建具有命名空间支持的初始navigator对象(即,最后一个参数设置为true),并将命名空间哈希作为最终参数传递,以查找索引、第一个匹配、所有

  • 问题内容: 我正在使用的Web应用程序偶尔会为某些用户带来数据完整性问题。我想打开跟踪级别的日志记录,但是由于我们每秒要处理100个请求,因此每个日志记录都是不可能的。 log4j是否可以有条件地记录日志?换句话说,我希望仅在特定用户发出请求时才能获得跟踪日志。由于我事先不知道哪些用户会受到影响,因此我无法简单地临时对用户名进行硬编码。 编辑: 我想我需要更清楚一点。我可以轻松地在日志语句中添加条