【问题标题】:JBoss 7 multiple log4j Configuration Using Spring Profile使用 Spring Profile 的 JBoss 7 多 log4j 配置
【发布时间】:2014-02-14 01:09:15
【问题描述】:

哦,生产环境可以用standalone.sh启动JBoss7.1.1 AS吗? 通常我们用 init 脚本启动它,然后在 jboss-cli.sh 的帮助下部署 WAR。 但是这种方法不会让日志文件创建。

log4j.appender.A1.File=../server/default/log/Mylog.log

当我使用standalone.sh 启动服务器时,日志文件创建成功。

但是当我用 service jboss start 启动它然后用 jboss-cli.sh 部署它 我收到此错误。

12:00:38,996 ERROR [stderr] (MSC service thread 1-3) log4j:ERROR setFile(null,true) call failed.
    12:00:38,997 ERROR [stderr] (MSC service thread 1-3) java.io.FileNotFoundException: ../server/default/log/Mylog.log (No such file or directory)
    12:00:38,998 ERROR [stderr] (MSC service thread 1-3) at java.io.FileOutputStream.open(Native Method)
    12:00:38,998 ERROR [stderr] (MSC service thread 1-3)    at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
    12:00:38,999 ERROR [stderr] (MSC service thread 1-3)    at java.io.FileOutputStream.<init>(FileOutputStream.java:136)
    12:00:38,999 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    12:00:39,000 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
    12:00:39,000 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    12:00:39,000 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    12:00:39,000 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    12:00:39,001 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    12:00:39,001 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
    12:00:39,001 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
    12:00:39,002 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
    12:00:39,002 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
    12:00:39,002 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
    12:00:39,003 ERROR [stderr] (MSC service thread 1-3)    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:415)
    12:00:39,003 ERROR [stderr] (MSC service thread 1-3)    at org.springframework.util.Log4jConfigurer.initLogging(Log4jConfigurer.java:72)
    12:00:39,003 ERROR [stderr] (MSC service thread 1-3)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    12:00:39,004 ERROR [stderr] (MSC service thread 1-3)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    12:00:39,004 ERROR [stderr] (MSC service thread 1-3)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    12:00:39,004 ERROR [stderr] (MSC service thread 1-3)    at java.lang.reflect.Method.invoke(Method.java:606)
    12:00:39,005 ERROR [stderr] (MSC service thread 1-3)    at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
    12:00:39,005 ERROR [stderr] (MSC service thread 1-3)    at org.springframework.beans.factory.config.MethodInvokingFactoryBean.doInvok

我还添加了 jboss 部署结构

 <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <exclusions>
                <module name="org.apache.log4j" />
            </exclusions>
        </deployment>
    </jboss-deployment-structure>
    <!-- <jboss-deployment-structure> <deployment> <exclusions> <module name="org.apache.log4j" 
        /> </exclusions> </deployment> <sub-deployment name="takaful.war"> <exclusions> 
        <module name="org.apache.log4j" /> </exclusions> </sub-deployment> <sub-deployment 
        name="takaful-0.0.1-SNAPSHOT.jar"> <exclusions> <module name="org.apache.log4j" 
        /> </exclusions> </sub-deployment> </jboss-deployment-structure> -->

最后我的 spring bean 初始化 log4j。

<beans profile="a">
    <bean id="logb"
        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>${loc}/${log4j.properties.location}</value>
        </list>
        </property>
        </bean>
        </beans>

        <beans profile="b">
        <bean id="logb"
                        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>${loc}/${log4j.properties.location2}</value>
        </list>
        </property>
        </bean>
        </beans>

        <beans profile="c">
        <bean id="logb"
                        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>${loc}/${log4j.properties.location3}</value>
        </list>
        </property>
        </bean>
        </beans>

如果我使用standalone.sh 启动JBoss7.1.1.FINAL,此代码可以完美运行,但如果我使用service jboss start 并通过部署warname.war 使用jboss-cli.sh 部署war,则会出现此错误

请帮忙。

【问题讨论】:

    标签: java spring spring-mvc log4j jboss7.x


    【解决方案1】:

    上面写着

    java.io.FileNotFoundException: ../server/default/log/Mylog.log
    

    所以当你用“service jboss start”启动时,当前目录是不同的。尝试将 JBOSS_HOME 添加到您的 jboss-as.conf 或安装 JBoss JBOSS_HOME=/usr/share/jboss-as

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多