`

在 JBoss 4.0.5GA 上使用应用程序自己的 log4j 配置

    博客分类:
  • java
阅读更多

1. 把 D:\jboss-4.0.5.GA\server\default\conf 里面的 log4j.xml 改名为 jboss-log4j.xml

2. 编辑 D:\jboss-4.0.5.GA\server\default\conf 里面的 jboss-service.xml 找到

   <!-- ==================================================================== -->
   
<!-- Log4j Initialization                                                 -->
   
<!-- ==================================================================== -->

   
<mbean code="org.jboss.logging.Log4jService"
      name
="jboss.system:type=Log4jService,service=Logging"
      xmbean-dd
="resource:xmdesc/Log4jService-xmbean.xml">
      
<attribute name="ConfigurationURL">resource:log4j.xml</attribute>
      
<!-- Set the org.apache.log4j.helpers.LogLog.setQuiteMode. As of log4j1.2.8
      this needs to be set to avoid a possible deadlock on exception at the
      appender level. See bug#696819.
      
-->
      
<attribute name="Log4jQuietMode">true</attribute>
      
<!-- How frequently in seconds the ConfigurationURL is checked for changes -->
      
<attribute name="RefreshPeriod">60</attribute>
   
</mbean>

把 resource:log4j.xml 改为 resource:jboss-log4j.xml

3. 在自己的应用程序的 WEB-INF 目录中添加一个 jboss-web.xml 内容如下

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
  
<class-loading java2ClassLoadingCompliance="false">
  
<loader-repository>
      ConfigTest:loader=ConfigTest.war
      
<loader-repository-config>java2ParentDelegation=false
      
</loader-repository-config>
   
</loader-repository>
 
</class-loading>
</jboss-web>

4. 把 log4j.jar 加到 build-path 中

5. 在自己的应用程序的 WEB-INF 目录中添加一个 log4j.properties 内容如下:

#Global variable definition
LOG_LEVEL
=DEBUG
LOG_FILE1
=D:/jboss-4.0.5.GA/server/default/log/configtest1.log
LOG_FILE2
=D:/jboss-4.0.5.GA/server/default/log/configtest2.log

# com.microsoft Logger
log4j.logger.org.stephencat.test
=${LOG_LEVEL}, logfile1
log4j.additivity.org.stephencat.test
=false

# com.microsoft Logger
log4j.logger.org.stephencat.cat
=${LOG_LEVEL}, logfile2
log4j.additivity.org.stephencat.cat
=false

# Console Appender Definition
log4j.appender.stdout
=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout
=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
=%-5p %c(%t) %x:%m%n
#log4j.appender.stdout.layout.ConversionPattern
=%-5p:[%d{MM/dd HH:mm:ss,SSS}] %c(%t) %x:%m%n

# File Appender Definition
log4j.appender.logfile1
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile1.File
=${LOG_FILE1}
log4j.appender.logfile1.DatePattern
='.'yyyy-MM-dd
log4j.appender.logfile1.layout
=org.apache.log4j.PatternLayout
log4j.appender.logfile1.layout.ConversionPattern
=%-5p:[%d{ISO8601}] %c(%t) %x:%m%n

# File Appender Definition
log4j.appender.logfile2
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile2.File
=${LOG_FILE2}
log4j.appender.logfile2.DatePattern
='.'yyyy-MM-dd
log4j.appender.logfile2.layout
=org.apache.log4j.PatternLayout
log4j.appender.logfile2.layout.ConversionPattern
=%-5p:[%d{ISO8601}] %c(%t) %x:%m%n

这里分别定义了两个命名控件:
logfile1 对应命名空间(Java 代码中的 package)org.stephencat.test.*
logfile2 对应命名空间 org.stephencat.cat.*

6. 建立一个用于初始化的 InitServlet ,配置如下方法:

    /**
     * Initialization of the servlet. <br>
     *
     * 
@throws ServletException if an error occure
     
*/
    
public void init(ServletConfig config) throws ServletException {
        
// Put your code here
        String isRelativePosition = config.getInitParameter("relativePosition");
        String logConfiguration 
= config.getInitParameter("logConfiguration");
        String root 
= "";
        
if(isRelativePosition.equals("true")){
            root 
= config.getServletContext().getRealPath("/");
        }
        PropertyConfigurator.configure(root 
+ logConfiguration);
    }

在 web.xml 配置这个 Servlet 的初始化参数(声明 log4j.properties 的位置)和启动优先级:

  <servlet>
    
<description>This is the description of my J2EE component</description>
    
<display-name>This is the display name of my J2EE component</display-name>
    
<servlet-name>InitServlet</servlet-name>
    
<servlet-class>org.stephencat.test.InitServlet</servlet-class>
    
<init-param>
        
<param-name>relativePosition</param-name>
        
<param-value>true</param-value>
    
</init-param>
    
<init-param>
        
<param-name>logConfiguration</param-name>
        
<param-value>WEB-INF/log4j.properties</param-value>
    
</init-param>
    
<load-on-startup>1</load-on-startup>
  
</servlet>

7. 在 org.stephencat.test.TestServlet (映射为 /test)中加入:

    static Logger log = Logger.getLogger(TestServlet.class.getName());

8. 在 org.stephencat.cat.Test2Servlet(映射为 /test2)中加入:

    static Logger log = Logger.getLogger(Test2Servlet.class.getName());

9. 重新启动 JBoss ,会出现如下错误消息:

11:53:21,549 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppend
er
" object is not assignable to a "org.apache.log4j.Appender" variable.
11:53:21,549 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" wa
s loaded by
11:53:21,549 ERROR [STDERR] log4j:ERROR [WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@dcc4e2
] whereas object of type
11:53:21,549 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender
" was loaded by [org.jboss.system.server.NoAnnotationURLClassLoader@a97b0b].
11:53:21,549 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FI
LE
".

这是因为自己的 log4j.jar 与 JBoss 的 log4jService 有点冲突,但这段错误消息实际上可以忽略

10. 访问以下网址:

http://localhost/..../test

http://localhost/..../test2

将分别在以下日志文件中输出日志内容:

D:/jboss-4.0.5.GA/server/default/log/configtest1.log
D:/jboss-4.0.5.GA/server/default/log/configtest2.log

文件名和物理路径可在 log4j.properties 中修改。

分享到:
评论

相关推荐

    jboss-4.0.5.GA.zip

    在使用"jboss-4.0.5.GA.zip"这个压缩包时,用户需要先将其解压,然后按照官方文档或者社区教程进行配置,包括但不限于设置环境变量、配置服务器端口、部署应用程序等步骤。在开发和部署过程中,理解并掌握上述知识点...

    jboss4.0.5-GA在使用RMI时的大坑

    标题中的“jboss4.0.5-GA在使用RMI时的大坑”指的是在使用JBOSS 4.0.5 GA版本时,如果涉及到远程方法调用(Remote Method Invocation, RMI)可能会遇到的一些常见问题或陷阱。在描述中提到了一个博客链接,虽然没有...

    JBOSS log4j 配置

    然而,在 JBOSS 服务器中使用 Log4j 时,可能会遇到一些冲突和配置问题。本文将详细介绍如何解决 JBOSS 和 Log4j 的冲突,配置 Log4j,及 Log4j 的基本使用方法。 解决 JBOSS 和 Log4j 冲突的配置 为了解决 JBOSS ...

    JBOSS 4.0.5 EJB3.0之MDB (ACTIVEMQ)

    JBoss 4.0.5是Red Hat公司推出的企业级Java应用服务器版本,它支持EJB3.0规范,这是一种用于构建分布式企业级应用程序的组件模型。EJB(Enterprise JavaBeans)是Java EE平台的核心部分,提供了服务和容器来简化开发...

    JBOSS 4.2.2GA 使用指南

    4. **使用JMX API**:在应用程序中,你可以使用JMX API来注册和操作MBeans,实现自我管理和监控。 ### 总结 JBOSS 4.2.2GA作为一个成熟的J2EE应用服务器,为开发者提供了丰富的功能和工具,包括EJB的开发与管理...

    log4j 在web中的应用

    - JBoss自带默认的log4j配置,因此在JBoss上使用log4j需要特别注意与默认配置之间的冲突。 - 当项目中包含log4j配置文件时,可能会影响JBoss原有的日志输出行为。例如,如果项目中的配置文件包含了Console ...

    jboss5.0.1GA端口配置

    JBoss AS 5.0.1 GA(General Availability)是JBoss应用服务器的一个版本,广泛应用于企业级Java EE应用程序的开发与部署。在多服务环境下,可能会遇到端口冲突的问题,特别是与Oracle数据库和Java EE应用程序使用的...

    jboss端口号修改

    - 使用浏览器访问新端口,例如http://localhost:8088,检查是否能够成功访问JBoss管理控制台或者部署的应用程序。 #### 可能遇到的问题及解决办法 1. **启动失败:** - 如果修改后JBoss无法启动,可能是由于端口...

    jboss下通过配置log4j.doc

    通过在jBoss环境中正确配置Log4j,我们可以轻松地为部署的应用程序实现高效且定制化的日志管理功能。无论是简单的控制台输出还是复杂的日志文件管理,Log4j都能够满足我们的需求。掌握这些配置技巧,对于提高应用...

    JBoss Log4j

    ### JBoss Log4j知识点详解 #### 一、引言 JBoss Log4j 是一个为 JBoss 应用服务器定制的日志记录...通过学习这些知识点,您可以更深入地理解如何在 JBoss 应用服务器环境中高效地使用 Log4j 来进行日志记录和管理。

    jboss-4.2.3.GA_下的jboss-4.2.3.GA_下的

    6. **热部署**:允许开发者在运行时更改和更新应用程序,而无需停止服务器。 7. **模块化设计**:JBoss AS的模块化架构使得组件可以独立部署和更新,提高了灵活性。 【压缩包文件解析】 1. **readme.html**:通常...

    JBoss4.2.3GA + EJB3.0 + JAAS

    JAAS是Java平台的认证和授权服务,它提供了一种标准的方式,用于实现应用程序的安全策略。开发者可以通过JAAS定义用户身份验证机制和权限控制,确保只有经过验证的用户才能访问受保护的资源。在JBoss中,JAAS被用来...

    pb11.5_plugin_jboss

    4. **客户端集成**:在客户端应用程序中引入和配置客户端组件,可能需要修改应用的源代码或配置文件。 5. **测试**:启动服务器和客户端,进行功能测试,确保所有预期功能都能正常工作。 6. **监控和优化**:在实际...

    在jboss上部署web应用

    在JBoss中部署应用程序相当直观,只需要将部署单元复制到对应的部署目录(例如server/default/deploy)。JBoss会持续监控该目录,一旦发现新文件,就会自动进行部署。部署的文件可以是EJB JARs、Web应用WARs、企业...

    配置JBoss应用服务器

    配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss应用服务器配置JBoss...

    jboss-5.1.0.GA 下载地址

    6. **管理与部署**:JBoss AS 5.1.0.GA提供了命令行工具、管理控制台和XML配置文件来管理和部署应用程序,支持WAR、EAR和JAR格式的部署单元。 7. **模块化设计**:JBoss AS 5.1.0.GA采用模块化结构,便于定制和裁剪...

    log4j应用实例

    在Web项目中使用Log4j时,通常会遇到一些特定场景和技术栈的选择问题,比如如何与Spring框架结合使用,以及如何在不同的服务器环境下(如Tomcat、JBoss)配置Log4j等。 ##### 2.1 Web项目中的Log4j配置 - **基本...

    jboss4.2.2GA中文文档

    日志配置位于`server/default/conf/log4j.xml`文件中。你可以根据需求调整日志级别、输出位置和格式。 #### 2. web 服务的端口号的修改 要更改web服务的端口号,你需要编辑`server/default/deploy/jboss-web....

    jboss配置入门,jboss的初级配置

    * 公共jar包:位于$JBOSS-HOME/server/default/lib下,用于存放公共的jar包,如数据库的JDBC jar、log4j.jar等。 * 配置日志文件:位于$JBOSS-HOME/server/default/conf下,用于配置日志的输出。 * 工作目录:位于$...

    jboss-logging-3.1.0.ga.jar.z

    首先,JBoss Logging是基于Java的日志API,它允许开发者使用统一的接口来实现多种日志框架的互换,如Log4j、Java Util Logging(JUL)和Logback。这使得开发者可以轻松地切换日志实现,无需修改大量代码,提高了代码...

Global site tag (gtag.js) - Google Analytics