【问题标题】:Multiple logger in same class using jboss7 default logging mechanism使用 jboss7 默认日志机制的同一类中的多个记录器
【发布时间】:2013-04-26 01:24:30
【问题描述】:

基本上,我需要使用 jboss7 日志机制以相同的记录器阈值在同一类中记录两条消息。请让我知道如何详细完成? 我按照您建议的方法,创建了两个周期性旋转文件处理程序,如下所示

            <periodic-rotating-file-handler name="FILE_DEBUG">
                <level name="DEBUG"/>
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="File111_debug.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>

            <periodic-rotating-file-handler name="FILE_INFO">
                <level name="INFO"/>
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="File222_info.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>

            <logger category="com.mypackage">
                <handlers>
                    <handler name="FILE_DEBUG"/>
                    <handler name="FILE_INFO"/>
                </handlers>
            </logger>

        <root-logger>
            <level name="DEBUG"/>
            <handlers>
                <handler name="CONSOLE"/>
            </handlers>
        </root-logger>

and in my class, I have declared as below,

package com.mypackage.log

ClassA{
private static final Logger loggerDebug = Logger.getLogger("FILE_DEBUG");
private static final Logger loggerInfo = Logger.getLogger("FILE_INFO");

method1()
{
    loggerDebug.debug("This message should be logged into  DEBUG log file");
        loggerInfo.info("This message should be logged into  INFO log file");
}

}

尽管在日志文件夹下创建了新的记录器文件,但上述行并未打印在相应的日志文件中。

如果您能帮我检查一下配置中出了什么问题,不胜感激?

【问题讨论】:

    标签: logging jboss7.x


    【解决方案1】:

    您可以将处理程序分配给记录器,但通过该记录器记录的所有消息都将使用指定的处理程序。

    解决此问题的最简单方法是使用两种不同的记录器类别。使用Logger.getLogger(Class&lt;?&gt;) 只是Logger.getLogger(Class&lt;?&gt;.getName()) 的快捷方式。这意味着您可以执行以下操作:

    package com.example;
    
    class ClassA {
        private static final Logger LOGGER1 = Logger.getLogger(ClassA.class.getName() + "1");
        private static final Logger LOGGER2 = Logger.getLogger(ClassB.class.getName() + "2");
    
        void method1() {
            LOGGER1.info("This message should be logged to a file called File111"); 
            LOGGER2.info("This message should be logged to a file called File222");
        }
    }
    

    然后像这样配置日志子系统:

    <subsystem xmlns="urn:jboss:domain:logging:1.1">
        ...
        <periodic-rotating-file-handler name="FILE1">
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} "/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="File111.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
        <periodic-rotating-file-handler name="FILE2">
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} "/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="File222.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
    
        <logger category="com.example1">
            <level name="INFO"/>
            <handlers>
                <handlers name="FILE1"/>
            </handlers>
        </logger>
    
        <logger category="com.example2">
            <level name="INFO"/>
            <handlers>
                <handlers name="FILE2"/>
            </handlers>
        </logger>
        ...
    </subsystem>
    

    另一种选择是对记录器类别使用过滤器,但这需要了解某种模式,以了解什么消息发送到哪个处理程序。

    【讨论】:

    • 非常感谢詹姆斯的即时回复
    • 我已经修改了问题,因为我无法在此处粘贴内容。感谢您的回复
    • 那么您想要一台带有 DEBUG 及更高版本的版本,另一款带有 INFO 及更高版本的版本?
    • 基本上有现有的“信息”和“调试”级别的消息被记录到文件中。但是根据新要求,我需要在键值对中记录更多额外的“信息”消息,以便只需要将这些消息记录到不同的文件,因为记录到这个新文件的日志消息将被其他一些人拾取申请分析。请让我知道实现此要求的最佳方法是什么
    猜你喜欢
    • 2022-10-23
    • 2013-09-11
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多