SLF4J Log4J Jboss 4.3 and EJB 3.0



我用ejb3+slf4j和maven 制作了一个新程序

要将SLF4J与LOG4J一起使用,我有

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.6.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.2</version>
  <scope>compile</scope>
</dependency>

但我说不要把log4j的罐子放在我的耳朵里使用JBOSS 的罐子

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>apache-log4j-extras</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
    </dependency>

Jboss有一个名为Jboss-log4j.xml 的配置文件

在根目录中说使用附加ASYNC

  <root>
      <appender-ref ref="ASYNC"/>
  </root>

appender Async使用appender FILE

 <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
    <param name="Threshold" value="INFO"/>
    <appender-ref ref="FILE"/>
</appender>

附加程序FILE是

 <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
     <param name="File" value="${jboss.server.log.dir}/server.log"/>
     <param name="Append" value="false"/>
     <param name="DatePattern" value="'.'yyyy-MM-dd"/>
     <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p [%c] %m%n"/>
     </layout>
  </appender>

这个appender正在处理这个文件中写入的许多内容。

但是我想要一个新的文件为我的服务

我添加了一个类别,类别的名称是包含我所有新开发的包的名称

    <category name="com.mycompany.ti.minewsystem">
            <priority value="DEBUG" />
            <appender-ref ref="MYAPPENDER"/>
    </category>

附加程序是

    <appender name="MYAPPENDER" class="org.jboss.logging.appender.DailyRollingFileAppender">
            <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
            <param name="File" value="${jboss.server.home.dir}/log/ws-mysystem.log"/>
            <param name="Append" value="false"/>
            <param name="DatePattern" value="'.'yyyy-MM-dd"/>
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%d [%t] %-5p [%c] %m%n"/>
            </layout>
    </appender>

最后,我的EJB导入SLF4J

  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;

创建反记录器

  private Logger logger = LoggerFactory.getLogger(MyEJB.class);

并使用

  logger.debug("--------- HI! ------------------");

日志文件(ws-mysystem.Log)已创建,但仍为零字节:(

一切都在JBOSS 4.3 上的Red Hat和Java 6上

有人知道我的手术出了什么问题吗?

也许Slf4J和JBOSS有什么黑暗之处?或者EJB3.0和ClassLoaders?还是2012年和世界末日?

提前感谢

检查类加载器设置-JBoss中的统一类加载器默认情况下有点过于统一(我遇到了独立web上下文之间的类和资源泄漏)。尝试禁用统一类加载器并更改父级优先设置。

最新更新