我在时遇到使用我的XML log4j的配置文件中定义我的appender记录。
我创建了我的耳朵的META-INF文件夹中的JBoss部署-structure.xml没有sucess。
JBoss的部署,structure.xml结构为:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="org.apache.log4j" slot="main"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
我甚至尝试过编辑我standalone.conf.bat文件中添加下列行:
set "JAVA_OPTS=%JAVA_OPTS% -Dorg.jboss.as.logging.per-deployment=false"
我的应用程序部署是这样的:
-> MyAppEAR.ear
-> META-INF
-> MANIFEST.MF
-> MyAoo.war
-> META-INF
-> MANIFEST.MF
-> jboss-deployment-structure.xml
-> WEB-INF
-> web.xml
-> lib
-> log4j-1.2.17.jar
-> ---
-> classes
-> log4j.xml
-> ...
我注意到以下错误:
- JBoss的部署,structure.xml在子部署忽略。 JBoss的部署,structure.xml只解析为顶层部署。
我甚至尝试从迁移JBOSS 7.1.0 7.1.1
一些帮助,请!
谢谢
感谢您的repply詹姆斯。
我没有你所说的话和移动JBoss的部署,structure.xml文件MyAppEAR.ear / META-INF。
我注意到,这样的例外:
jboss-deployment-structure.xml in subdeployment ignored. jboss-deployment-structure.xml is only parsed for top level deployments.
......不会发生。 我不知道这是否意味着该文件被解析...我怎么能知道?
尽管这一新行为我的log4j.xml配置文件还没有加载和使用记录器仍然是Log4j的。
我知道这becaused我写到控制台:
System.out.println(Logger.getRootLogger().getClass().toString())
...并获得:
class org.jboss.logmanager.log4j.BridgeLogger
我也试过:
- 移动我的log4j.xml到MyAppEAR.ear / META-INF。
- 除去不必要的-Dorg.jboss.as.logging.per部署=从standalone.conf.bat 假
- 从我的JBoss部署,structure.xml移除插槽
任何更多的想法?
谢谢
喜RedEagle看到下面的配置,我已经测试其工作正常...
第1步创建一个新模块,如
jboss-as-7.1.1.Final/modules/com/company/mylog/main/
-module.xml
-log4j-1.2.14.jar
Content of module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.company.mylog">
<resources>
<resource-root path="log4j-1.2.14.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
第2步现在my.ear / META-INF /
-jboss-deployment-structure.xml
-MANIFEST.MF
JBoss的部署,structure.xml的内容
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>
<sub-deployment name="MyWeb.war">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>
<sub-deployment name="MyBeans.jar">
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</sub-deployment>
</jboss-deployment-structure>
MANIFEST.MF的内容
Manifest-Version: 1.0
Dependencies: com.company.mylog
步骤-3 MyLogger.java的内容
public static Logger getLogger(String name) {
Logger logger= LogManager.getLogger(name);
PropertyConfigurator.configure("log4j.properties"); //Path to log4j.properties as many option available in my case for testing i used static path /home/gyani/log4j.properties
return logger;
}
步骤4在此是log4j.properties
log4j.rootLogger=info,gyani
log4j.appender.gyani=org.apache.log4j.RollingFileAppender
log4j.appender.gyani.File=/home/gyani/myserverlog.log
log4j.appender.gyani.Append=true
log4j.appender.gyani.MaxFileSize=100000KB
log4j.appender.gyani.MaxBackupIndex=10
log4j.appender.gyani.layout=org.apache.log4j.PatternLayout
log4j.appender.gyani.layout.ConversionPattern=[%d{MMM d HH:mm:ss yyyy}] [%-5p] [%c]: %m%n
您jboss-deployment-structure.xml
需要在你的MyAppEAR.ear/META-INF
目录下。 也没有必要对slot
用于这种情况下属性。
另外, -Dorg.jboss.as.logging.per-deployment=false
不JBoss AS中7.1.1.Final使用,但它并没有任何伤害任何东西。