Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss 5.0.1:log4j.properties文件在EAR中未生效_Java_Log4j_Jboss5.x - Fatal编程技术网

Java JBoss 5.0.1:log4j.properties文件在EAR中未生效

Java JBoss 5.0.1:log4j.properties文件在EAR中未生效,java,log4j,jboss5.x,Java,Log4j,Jboss5.x,我无法使log4j.properties文件中的设置生效。我已经在以下论坛讨论中遵循了建议: 这是我的log4j.properties文件(在EAR的根目录中): 这是我的jboss-app.xml(在[ear]/META-INF中): 严格的 com.anfscd:loader=AnfscdLoader java2ParentDelegation=false 我们使用Hibernate进行持久化,在输出控制台中非常冗长。我不想看到Hibernate控制台输出,除非出现错误 顺便说一下,我

我无法使log4j.properties文件中的设置生效。我已经在以下论坛讨论中遵循了建议:

这是我的log4j.properties文件(在EAR的根目录中):

这是我的jboss-app.xml(在[ear]/META-INF中):


严格的
com.anfscd:loader=AnfscdLoader
java2ParentDelegation=false
我们使用Hibernate进行持久化,在输出控制台中非常冗长。我不想看到Hibernate控制台输出,除非出现错误


顺便说一下,我使用的是log4j-1.2.15.jar。

AFAIK是ear的根文件夹,没有添加到类路径中,并且是不可见的属性文件


更好的地方应该是在一个普通jar文件的根目录中,或者在主war文件的WEB-INF/类中!说说追你的尾巴吧

首先,底线是,在JBoss5.x中运行的Log4J确实在EAR的根目录中看到并处理Log4J.properties文件

。。。但只有在没有其他干扰的情况下。例如,如果要将log4j.xml与log4j.properties一起打包到EAR的根目录中,则log4j默认为.xml文件而不是.properties文件。它从log4j.xml加载配置,甚至不需要寻找log4j.properties

唉,那个特殊的情景不是我的问题

说到这里,我的问题是第三方JAR包含自己的log4j.properties文件。与.xml文件一样,如果Log4J偶然发现了一个Log4J.properties,它就不必费心寻找另一个Log4J.properties。不管出于什么原因,在JBoss4.2.x中,Log4J将EAR根中的Log4J.properties置于JAR中的Log4J.properties之上。相反,在JBoss5.x中,Log4J获取JAR中的Log4J.properties文件,而不是EAR根目录中的文件

我已经从第三方JAR中删除了log4j.properties文件,一切都像一个符咒


通过启用Log4J的调试模式,我偶然发现了问题的原因。仅供参考,您可以使用开关
-Dlog4j.debug
启动JBoss,或者在JBoss-log4j.xml中的
log4j:configuration
标记中设置
debug=“false”

我在EAR的根目录中有一个jndi.properties,它正在被处理。这就是让我如此困惑的原因。为什么一个属性文件正在处理而另一个被忽略?对不起,我现在和你一样困惑。。。FWIW我也花了很多时间试图弄清楚log4j使用的是哪个配置文件。。。祝你好运!举手之劳谢谢分享。
#
# The root logger is set to INFO by default.
# This level can be changed programmatically at runtime.
#
log4j.rootLogger=INFO, stdout, file
# use the hibernate appender for audit logs.
log4j.logger.auditLogger.com.anfscd=INFO, hibernate, HBSS
# Console appender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %d %c %x - %m %n
log4j.appender.stdout.Threshold=WARN
# Use this ConversionPattern to display thread.
#log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
# Daily rolling file appender.
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File=c:/anfscd/log/anfscd-server.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout.ConversionPattern=%-5p %d %c %x - %m %n
# Use this ConversionPattern to display thread.
#log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
# Hibernate appender
log4j.appender.hibernate=com.anfscd.common.util.database.log.HibernateAppender
log4j.appender.hibernate.sessionServiceClass=com.anfscd.cmd.model.util.persistence.HibernateHelper
log4j.appender.hibernate.loggingEventClass=com.anfscd.cmd.model.audit.AuditLogRecord
# direct log messages to windows system logs #
log4j.appender.HBSS=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.HBSS.Source=Project Name
log4j.appender.HBSS.layout=org.apache.log4j.PatternLayout
log4j.appender.HBSS.layout.ConversionPattern=%-5p %d %c %x - %m %n
# suppress org.hibernate messages
log4j.logger.org.hibernate=ERROR, stdout
<?xml version="1.0" encoding="UTF-8"?>
<jboss-app>
  <module-order>strict</module-order>
  <loader-repository>
    com.anfscd:loader=AnfscdLoader
    <loader-repository-config>
      java2ParentDelegation=false
    </loader-repository-config>
  </loader-repository>
</jboss-app>