1

为了让 log4j 在 ejb 模块上工作,你能给我一个逐步的过程吗?情况是这样的:我有我的 ejbmodule,它使用休眠来执行一些获取任务,我想记录所有内容。我想使用 log4j,但我无法理解网络上描述的其他过程的某些步骤,比如 jboss 中的那些。

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

就我而言:

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

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

  • 我不知道如何初始化日志环境(我有一个在启动时初始化休眠的 ejb 会话 bean,我想要一个初始化记录器)

你们中的任何人都可以帮助我吗?

提前致谢

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

  • MyprojectLogic(包含 ejbmodules)
  • MyprojectLogicClient(包含了所有的接口,是给客户端的库)
  • MyprojectLogicEAR(实际上什么都不包含,我不明白它的目的是什么)

答案:见下文或在此处查看javafortheweb博客

4

1 回答 1

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");

JBoss 已经在%JBOSS_FOLDER%/standalone/configuration/standalone.xml. 默认情况下,您的记录器将输出到 server.log 和控制台,但您可以添加一些附加程序将您的应用程序日志输出到另一个文件。

这是一个示例,编辑该文件并添加以下片段(按照文件的定义):

  • 这是在日志文件夹内的文件 myappfile.log 中添加一个附加程序(在 name="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”类别中的所有日志发送到先前创建的附加程序(将其复制到文件中其他定义的记录器之后,但在根记录器之前):
<logger category="com.mypackage">
    <level name="DEBUG"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILETWO"/>
    </handlers>
</logger>

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

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

于 2013-01-22T16:39:50.893 回答