如何使用log4j.xml配置log4j,使其根据类名追加到不同的日志文件中?[英] How do I configure log4j using log4j.xml to append to different log files based on class name?

本文是小编为大家收集整理的关于如何使用log4j.xml配置log4j,使其根据类名追加到不同的日志文件中?的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我想设置log4j,以便从package com.foo.foo.bar下产生的所有log Meessages to to bar rog.log,以及在package com.bar.blatz下产生的所有log Meessages to blatz.log to Blatz.log .

问题

  • 如何使用log4j.xml?
  • 进行此操作
  • 我知道使用属性文件可以使用它,但是如何使用XML配置?

推荐答案

这是基于我的答案对类似的问题:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- general application log -->
    <appender name="BarLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="bar.log" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender> 

    <!-- additional fooSystem logging -->
    <appender name="BlatzLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="blatz.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender>

    <logger name="com.foo.bar">
        <appender-ref ref="BarLogFile"/>
    </logger>

    <logger name="com.bar.blatz">
        <appender-ref ref="BlatzLogFile"/>
    </logger>

    <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
    </root>
</log4j:configuration>

如果将Appender-REF添加到根元素中,它也将接收com.foo.bar等消息.您可以通过在登录器上指定'添加性=" false"'来停止它.

其他推荐答案

  <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
  </root>

我们可以在这里添加附录.如果应用程序使用root Logger,它将起作用.例如石英调度程序API.

本文地址:https://www.itbaoku.cn/post/1574769.html

问题描述

I want to set up log4j so that all log meessages produced from classes under package com.foo.bar go to bar.log, and all the log meessages produced from classes under package com.bar.blatz go to blatz.log.

Questions

  • How do I do this using log4j.xml?
  • I know its possible using property files, but how do I do it using the XML configuration?

推荐答案

This is based on my answer to a similar question:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- general application log -->
    <appender name="BarLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="bar.log" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender> 

    <!-- additional fooSystem logging -->
    <appender name="BlatzLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="blatz.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender>

    <logger name="com.foo.bar">
        <appender-ref ref="BarLogFile"/>
    </logger>

    <logger name="com.bar.blatz">
        <appender-ref ref="BlatzLogFile"/>
    </logger>

    <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
    </root>
</log4j:configuration>

If you add an appender-ref to the root element, it will also receive com.foo.bar etc messages. You can stop that by specifying 'additivity="false"' on the loggers.

其他推荐答案

  <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
  </root>

We can add appenders here. It will work if the application is using root logger. for example quartz Scheduler API.