根据 class 名称 JBoss AS 7.0.0 将日志重定向到特定文件

Redirect Logs to a specific file based on class name JBoss AS 7.0.0

我想根据特定的 class 名称来分隔日志,例如 class 名称是

    package com.task;

    public class MyService {
    /**
     * Logger.
     */
    private static final Logger LOGGER = Logger.getLogger(MyService.class);

然后所有的日志都应该被重定向到在 JBoss standalone.xml 文件中针对此 class 名称注册的文件,例如我已经做了

 <subsystem xmlns="urn:jboss:domain:logging:1.0">
        <console-handler name="CONSOLE" autoflush="true">
            <level name="INFO"/>
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </console-handler>

        <periodic-rotating-file-handler name="FILE" autoflush="true">
            <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="server.log"/>
            <suffix value=".yyyy-MM-dd"/>
        </periodic-rotating-file-handler>

        <periodic-rotating-file-handler name="MY_LOG" autoflush="true">
            <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="my_log.log"/>
            <suffix value=".yyyy-MM-dd"/>
        </periodic-rotating-file-handler>


        <logger category="com.arjuna">
            <level name="WARN"/>
        </logger>
        <logger category="org.apache.tomcat.util.modeler">
            <level name="WARN"/>
        </logger>
        <logger category="sun.rmi">
            <level name="WARN"/>
        </logger>
        <logger category="com.task.MyService">
            <level name="DEBUG"/>
            <handlers>
                <handler name="MY_LOG"/>
            </handlers>
        </logger>
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="FILE"/>                    
            </handlers>
        </root-logger>
    </subsystem>

正在创建名称为 my_log.log 的日志文件,但日志未重定向到该文件,它们仍然覆盖 [=默认为 32=] 文件。

我如何才能记录此 MyService.class 中的语句以仅写入 my_log.log 文件?

阿南德,

需要检查的几件事:

  1. 您是否在 MyService class 中登录调试级别。根据配置,它将仅记录调试语句。
  2. 尝试引入具有相同配置的 log4j.xml。

谢谢, 阿伦

我转向更高版本的 Jboss 即。 7.1.1 用于解决这个问题,但是在寻找解决另一个问题的过程中经历了很多头痛之后,我找到了一个工作 solution Here for Same 7.0.0版本 引用线程的回答

you need to explicitly tell the JBoss container that your web application needs log4j. And you do this by adding the following line into /META-INF/MANIFEST.MF

Dependencies: org.apache.log4j

依赖项:org.apache.log4j

感谢该主题的原始贡献者。