2

我已经用我的自定义 log4j 配置了我的 EJB 这是我的 log4j xml 文件

<appender name="sptLogs" class="org.apache.log4j.DailyRollingFileAppender">

    <param name="File" value="D:/temp/logs/sm-ent/support.log" />

    <layout class="org.apache.log4j.PatternLayout">

        <!-- <param name="ConversionPattern" value="%m%n" /> -->

        <param name="ConversionPattern"    value="%d{DATE} %5p %c{1}:%L - %m%n" />

    </layout>



    <filter class="org.apache.log4j.varia.LevelRangeFilter">

        <param name="LevelMin" value="INFO" />

        <param name="LevelMax" value="FATAL" />

    </filter>



</appender>



<appender name="appLogs" class="org.apache.log4j.RollingFileAppender">



    <param name="File" value="D:/temp/logs/sm-ent/app.log" />

    <!--

    <param name="File" value="/usr/local/2-tomcat_integration/webapps/SanMarWebService/logs/app.log"/>

     -->

    <param name="Threshold" value="DEBUG"/>

    <param name="Append" value="true" />

    <param name="maxFileSize" value="5MB" />

    <param name="maxBackupIndex" value="20" />

    <layout class="org.apache.log4j.PatternLayout">

    <!--  <param name="ConversionPattern" value="%d %-4r [%t] %-5p %c %x - %m%n" /> -->

        <param name="ConversionPattern" value="%d{DATE} %-5p %-15c{1}:%M() %m%n"/>

    </layout>



    <filter class="org.apache.log4j.varia.LevelRangeFilter">

        <param name="LevelMin" value="DEBUG" />

        <param name="LevelMax" value="FATAL" />

    </filter>

</appender>



<appender name="errorfile" class="org.apache.log4j.RollingFileAppender">

    <param name="maxFileSize" value="500KB" />

    <param name="maxBackupIndex" value="20" />



    <param name="File" value="D:/temp/logs/sm-ent/errors.log" />

    <!--

    <param name="File" value="/usr/local/2-tomcat_integration/webapps/SanMarWebService/logs/errors.log" />

    -->

    <layout class="org.apache.log4j.PatternLayout">

        <param name="ConversionPattern"    value="%d{DATE} %5p %c{1}:%L - %m%n" />

    </layout>

    <filter class="org.apache.log4j.varia.LevelRangeFilter">

        <param name="LevelMin" value="error" />

        <param name="LevelMax" value="fatal" />

    </filter>

</appender>



<logger name="com.sanmar">

    <level value="DEBUG"/>

      <appender-ref ref="sptLogs"/>

</logger>



<root>

    <level value="TRACE" />

    <appender-ref ref="appLogs" />

    <appender-ref ref="errorfile" />

</root>

我正在使用 spring 使用这样的 spring bean 来初始化 LOG4J

    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">

    <property name="targetClass"

        value="org.springframework.util.Log4jConfigurer" />

    <property name="targetMethod" value="initLogging" />

    <property name="arguments">

        <list>           

                 <value>D:\temp\properties\sm-enterprise-log4j.xml</value>                                   

        </list>

    </property>

</bean>

但我得到了错误

15:57:39,667 ERROR [stderr] (EJB default - 1) java.lang.ClassCastException: org.apache.log4j.DailyRollingFileAppender cannot be cast to org.apache.log4j.Appender



15:57:39,668 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:238)



15:57:39,670 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171)



15:57:39,670 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184)



15:57:39,671 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502)



15:57:39,672 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:415)



15:57:39,672 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:919)



15:57:39,673 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790)



15:57:39,673 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)



15:57:39,674 ERROR [stderr] (EJB default - 1)     at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:821)



15:57:39,675 ERROR [stderr] (EJB default - 1)     at org.springframework.util.Log4jConfigurer.initLogging(Log4jConfigurer.java:69)



15:57:39,676 ERROR [stderr] (EJB default - 1)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)



15:57:39,676 ERROR [stderr] (EJB default - 1)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)



15:57:39,677 ERROR [stderr] (EJB default - 1)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)



15:57:39,677 ERROR [stderr] (EJB default - 1)     at java.lang.reflect.Method.invoke(Method.java:597)



15:57:39,678 ERROR [stderr] (EJB default - 1)     at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)



15:57:39,678 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.config.MethodInvokingFactoryBean.doInvoke(MethodInvokingFactoryBean.java:162)



15:57:39,679 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:152)



15:57:39,679 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)



15:57:39,680 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)



15:57:39,681 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)



15:57:39,682 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)



15:57:39,683 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)



15:57:39,683 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)



15:57:39,684 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)



15:57:39,684 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)



15:57:39,685 ERROR [stderr] (EJB default - 1)     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)



15:57:39,686 ERROR [stderr] (EJB default - 1)     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)



15:57:39,686 ERROR [stderr] (EJB default - 1)     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)



15:57:39,687 ERROR [stderr] (EJB default - 1)     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)



15:57:39,688 ERROR [stderr] (EJB default - 1)     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)



15:57:39,688 ERROR [stderr] (EJB default - 1)     at com.sanmar.service.ServiceFactory.getApplicationContext(ServiceFactory.java:26)



15:57:39,689 ERROR [stderr] (EJB default - 1)     at com.sanmar.service.ServiceFactory.getValidationService(ServiceFactory.java:37)



15:57:39,689 ERROR [stderr] (EJB default - 1)     at com.sanmar.service.integration.webservice.ejb.ValidationServiceBean.performValidationInventoryService(ValidationServiceBean.java:27)



15:57:39,690 ERROR [stderr] (EJB default - 1)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)



15:57:39,691 ERROR [stderr] (EJB default - 1)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)



15:57:39,691 ERROR [stderr] (EJB default - 1)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)



15:57:39,692 ERROR [stderr] (EJB default - 1)     at java.lang.reflect.Method.invoke(Method.java:597)



15:57:39,692 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)



15:57:39,693 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,694 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)



15:57:39,694 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)



15:57:39,695 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,695 ERROR [stderr] (EJB default - 1)     at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)



15:57:39,696 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,696 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)



15:57:39,697 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,697 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)



15:57:39,698 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)



15:57:39,699 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,699 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)



15:57:39,700 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,700 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)



15:57:39,701 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)



15:57:39,701 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)



15:57:39,702 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,702 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropogatingInterceptor.processInvocation(EJBRemoteTransactionPropogatingInterceptor.java:80)



15:57:39,703 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,704 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)



15:57:39,704 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,705 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)



15:57:39,705 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,706 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)



15:57:39,707 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,707 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)



15:57:39,708 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)



15:57:39,708 ERROR [stderr] (EJB default - 1)     at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)



15:57:39,709 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)



15:57:39,709 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:300)



15:57:39,710 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$200(MethodInvocationMessageHandler.java:64)



15:57:39,710 ERROR [stderr] (EJB default - 1)     at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:194)



15:57:39,711 ERROR [stderr] (EJB default - 1)     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)



15:57:39,712 ERROR [stderr] (EJB default - 1)     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)



15:57:39,712 ERROR [stderr] (EJB default - 1)     at java.util.concurrent.FutureTask.run(FutureTask.java:138)



15:57:39,713 ERROR [stderr] (EJB default - 1)     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)



15:57:39,713 ERROR [stderr] (EJB default - 1)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)



15:57:39,714 ERROR [stderr] (EJB default - 1)     at java.lang.Thread.run(Thread.java:619)



15:57:39,714 ERROR [stderr] (EJB default - 1)     at org.jboss.threads.JBossThread.run(JBossThread.java:122)



15:57:39,715 ERROR [stderr] (EJB default - 1) log4j:ERROR Could not parse url [file:D:/temp/properties/sm-enterprise-log4j.xml].



15:57:39,715 ERROR [stderr] (EJB default - 1) java.lang.NullPointerException

我正在使用 jboss 模块并使用 log4j-1.2.16 模块进行日志记录。任何人都可以帮助我在配置或什么方面做错了什么。我试过使用 jboss-deployment-structure.xml 文件

<deployment>

    <exclusions>

        <module name="org.apache.log4j" />

    </exclusions>

</deployment>

<sub-deployment name="BusinessComponent-1.1.jar">

    <exclusions>

        <module name="org.apache.log4j" />

    </exclusions>

</sub-deployment>

<sub-deployment name="sanmar-services-impl-1.1.jar">

    <exclusions>

        <module name="org.apache.log4j" />

    </exclusions>

</sub-deployment>

但没有运气。

我在 jboss 社区讨论中的原始帖子的链接是 https://community.jboss.org/thread/199439?tstart=0

4

3 回答 3

2

这将在 JBoss 7.2.x 中修复,但尚未发布。因此,对于旧版本,您需要排除服务器 log4j 库。

于 2012-05-09T16:35:14.670 回答
2

更多的图书馆将不得不被排除在外。在这里找到了一个有效的排除集

http://tinyapps.blogspot.com/2013/01/getting-logback-and-slf4j-to-work-in.html

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
        <exclusions>
            <module name="org.apache.commons.logging" />
            <module name="org.apache.log4j" />
            <module name="org.jboss.logging" />
            <module name="org.jboss.logging.jul-to-slf4j-stub" />
            <module name="org.jboss.logmanager" />
            <module name="org.jboss.logmanager.log4j" />
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>
于 2013-06-21T21:11:37.060 回答
0

我在 EAP 6.0 和 AS 7 中遇到了同样的问题,但建议的解决方案不起作用(在 EAP 6.2 和 AS 7.1.1 中完美运行)。
在 jboss-deployment-structure.xml 文件中,您不必排除 log4j 之类的库,您只需包含应用程序需要从 JBOSS 获得的依赖项。
如果您的应用程序不需要库,您可以编写:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
    <deployment>
        <dependencies>
        </dependencies>
    </deployment>
</jboss-deployment-structure>
于 2014-11-05T10:34:31.933 回答