你能逐步解释如何在Jboss 7.1中的ejb模块中使用log4j吗?

时间:2013-01-22 11:36:59

标签: java jboss log4j ejb jboss7.x

为了让log4j在ejb模块上工作,你能不能一步一步地给我一个程序? 情况是这样的:我有我的ejbmodule,它使用hibernate来执行一些提取任务,我想记录所有内容。我想使用log4j,但是我无法理解网络上描述的其他程序的一些步骤,例如来自jboss的程序。

你能告诉我我应该做什么,一步一步吗?

就我而言:

  • 我有我的配置文件(我不知道放在哪里)

  • 我有log4j.jar(我不知道放在哪里)

  • 我不知道如何初始化日志环境(我有一个ejb会话bean,在启动时初始化hibernate,我希望有人初始化记录器)

你们有人可以帮助我吗?

提前致谢

编辑: 感谢第一个建议,它可能会有所帮助,但我不明白其他人可能在耳朵里有META-INF。 我的项目看起来像3个项目togheder:

  • MyprojectLogic(包含ejbmodules)
  • MyprojectLogicClient(包含所有接口,它是要提供给客户端的库)
  • MyprojectLogicEAR(实际上什么都没有,我没有得到它的用途)

答案:请参阅下文或查看此处javaforthewebblog

1 个答案:

答案 0 :(得分:2)

Jboss已经附带了log4j。 在开发EJB时,您需要:

  1. 导入Logger类:import org.apache.log4j.Logger;
  2. 如果导入无法解决,请将此jar添加到路径:%JBOSS_HOME%\ modules \ org \ apache \ log4j \ main \ log4j-1.2.16.jar
  3. 使用记录器创建一个字段:private static Logger logger = Logger.getLogger(YourEJBClass.class);
  4. 以任何方式使用记录器:logger.info("my log");
  5. JBoss已经在%JBOSS_FOLDER%/standalone/configuration/standalone.xml下附带了一个配置文件。默认情况下,您的记录器将输出到server.log和控制台,但您可以添加一些appender将您的应用程序日志输出到另一个文件。

    以下是一个示例,编辑该文件并添加以下代码段(遵循文件定义):

    • 这个是在日志文件夹中的文件myappfile.log中添加一个appender(在已经定义的名称=“FILE”之后添加它):
    <periodic-rotating-file-handler name="FILETWO">
      <formatter>
        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
      </formatter>
      <file relative-to="jboss.server.log.dir" path="myappfile.log"/>
      <suffix value=".yyyy-MM-dd"/>
      <append value="true"/>
    </periodic-rotating-file-handler>
    
    • 添加此片段告诉log4j将所有日志从“com.mypackage”类别发送到之前创建的appender(在文件中的其他已定义的logger之后复制,但在root-logger之前):
    <logger category="com.mypackage">
        <level name="DEBUG"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILETWO"/>
        </handlers>
    </logger>
    

    重新启动服务器,您应该在文件夹中看到新的myappfile.log。确保您的应用程序记录某些内容,例如,在某个servlet中添加logger.info(“我的servlet信息日志”)并从浏览器中调用它。您还将在控制台中看到此日志

    如果您需要进一步定制,请查看log4j帮助。