Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java 将log4j消息从方法重定向到其他日志文件_Java_Logging_Log4j - Fatal编程技术网

Java 将log4j消息从方法重定向到其他日志文件

Java 将log4j消息从方法重定向到其他日志文件,java,logging,log4j,Java,Logging,Log4j,现在,我使用log4j的纯香草/开箱即用的形式。我在类路径中有一个log4j.properties文件,web应用程序中到处都是各种记录器消息。现在我感兴趣的是将日志消息从包“xyz”中的方法“abc”重定向到特定的日志文件“pqr”。我不希望所有来自程序包xyz的记录器消息都转到“pqr”,而只是来自程序包中的一个方法(“abc”) 我如何做到这一点 短暂性脑缺血发作 Bo我认为它不会那么颗粒状。为什么不将该方法拉到一个单独的类中呢?这是我正在使用的配置文件。这将向文件发送一些特定消息,向控制

现在,我使用log4j的纯香草/开箱即用的形式。我在类路径中有一个log4j.properties文件,web应用程序中到处都是各种记录器消息。现在我感兴趣的是将日志消息从包“xyz”中的方法“abc”重定向到特定的日志文件“pqr”。我不希望所有来自程序包xyz的记录器消息都转到“pqr”,而只是来自程序包中的一个方法(“abc”)

我如何做到这一点

短暂性脑缺血发作
Bo

我认为它不会那么颗粒状。为什么不将该方法拉到一个单独的类中呢?

这是我正在使用的配置文件。这将向文件发送一些特定消息,向控制台发送其他消息。这可能会对你有所帮助。 这在独立应用程序中使用

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- ============================== -->
<!-- Append SQL messages to a file. -->
<!-- ============================== -->
<appender name="SQL" class="org.apache.log4j.RollingFileAppender">
    <param name="Threshold" value="TRACE" />
    <param name="File" value="sql-statement.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="5000KB" />
    <param name="MaxBackupIndex" value="100" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n" />
    </layout>
</appender>

<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%p] %m%n" />
    </layout>
</appender>

<!-- =============================== -->
<!-- Application specific categories -->
<!-- =============================== -->
<category name="com.edusoft.crashtest.qsbi">
    <priority value="DEBUG" />
    <appender-ref ref="CONSOLE" />
</category>
<category name="com.edusoft.crashtest.qsbi.printer" additivity="true">
    <priority value="TRACE" />
    <appender-ref ref="SQL" />
</category>

<!-- Setup the Root category -->
<root>
    <priority value="ERROR" />
</root>


好主意。但这就是我试图做的,我在属性文件中创建了一个以上的记录器,并在方法中使用该记录器(基本上在类级别声明两个记录器对象),并且来自该方法的所有消息都被重定向到这个新的独立记录器。类似于这样的内容:oops意外按下enter.private static Logger=Logger.getLogger(Main.class);私有静态记录器logger2=Logger.getLogger(“审核日志”);/***@param args命令行参数*/public static void main(String[]args){//TODO代码应用程序逻辑此处logger.info(“TESTS”);logger2.info(“sdsdsds”);System.out.println(“叮当”);@BoCode:那么,它是否按预期工作?请将此代码和您的配置添加到您的问题中。这可能会让更多人回答您的问题。