当前位置: 首页 > 面试题库 >

在JBoss 7.1.1下使用应用程序的Log4J配置

袁亦
2023-03-14
问题内容

我在使用在XML log4j配置文件中定义的附加程序进行记录时遇到麻烦。

我在EAR的META-INF文件夹上创建了 jboss-deployment-structure.xml ,没有成功。

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-deployment-structure.xml被忽略。 jboss-deployment-structure.xml仅针对顶级部署进行解析。

我什至尝试从JBOSS 7.1.0迁移到7.1.1

请帮忙!

谢谢

感谢詹姆斯的答复。

我按照您说的做了,并将 jboss-deployment-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。

我知道这是因为我写了控制台:

System.out.println(Logger.getRootLogger().getClass().toString())

…并得到:

class org.jboss.logmanager.log4j.BridgeLogger

我也尝试过:

  • 将我的 log4j.xml 移到 MyAppEAR.ear / META-INF
  • standalone.conf.bat中* 删除不必要的 -Dorg.jboss.as.logging.per-deployment = false *
  • 从我的 jboss-deployment-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-deployment-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


 类似资料:
  • 我试图通过以下教程在我的Web应用程序中配置log4j2。我正在使用glassfish 4.1。1服务器和servlet版本3.1。我可以使用以下配置配置日志功能: log4j。性质 属性文件放在src/main/资源文件夹中 网状物xml 定义文件位置的上下文参数被注释掉。默认情况下,log4j可能会查找名为log4j的文件。财产。不过,我只是想知道指定文件位置的方法是否正确。 我也不确定哪个j

  • 我正在使用log4j2库来管理日志记录过程。我创建了一个名为log4j2的配置文件。包含appender和logger配置的xml。然后,我在每个类中定义了一个记录器 我没有在任何地方指定conf文件的名称,所以我认为库隐式地获取并读取它。 现在,我需要以jar文件的形式提供我的应用程序,所以我需要使配置文件可用,以便用户可以修改和配置它。 在我的例子中,我建议在jar文件级别创建一个XXX文件夹

  • 我尝试了一个显示其他响应的测试用例,我将一步一步地解释它: > 我在我的设备上安装了MDM配置文件,这提示我安装了一个应用程序,并且我成功地安装了它。应用程序已进入“应用程序中的配置文件”部分。 然后我手动删除了应用程序。

  • 我的项目有问题。我们正在使用JBoss7.1.1,我们希望在4.1版中使用envers。版本4.1中的Envers需要版本4.1中的Hibernate。不幸的是,jboss 7.1.1包含较旧的Hibernate和Envers模块。 我有两个选择: 更改JBoss中的模块(放置新的环境 或: 在war中排除JBoss模块并使用WEB-INF/lib中的libs。我使用以下方法排除了模块: 我已经将

  • 我在使用DOMConfigurator的JavaEE Web应用程序中使用Log4j时面临一个问题。我的类路径log4j.jar文件,log4j.xml文件的路径 /WEB-INF/config/log4j.xml. 以下是例外情况: 下面是获取log4j的代码。servlet中的xml文件: 进入网页。xml

  • 我使用log4j(1.2.15)来登录我的应用程序,其中我有两个用于两个不同包(darius.log4j.sql和darius.log4j.net)的文件追加器和一个控制台追加器。其配置如下: 我现在需要的是以编程方式添加一个新的文件appender,如果出现特定的数据组合。我知道如何定义这个新的文件appender(前C),但我不知道如何设置级别和新的appender到第三个包: 其中C是第三个