【问题标题】:Configuring log4j2 in a multi-module J2EE web project without maven在没有 maven 的多模块 J2EE Web 项目中配置 log4j2
【发布时间】:2016-12-29 11:49:48
【问题描述】:

我已经在网上搜索了一段时间以找到我的问题的答案,但我能找到的所有内容都解决了使用 Maven 实现的多模块项目。我的项目不使用 Maven,因此对我的方案没有帮助。

我正在构建一个 Java 8 J2EE Web 服务项目,该项目在 Tomcat 8 上运行,并被分成几个单独的项目(参见下面的项目树)。我没有使用 maven,我通过 eclipse 定义了所有依赖项(我希望在某个时候了解 maven 并“mavenize”我的项目,但我还没有)。

我怎样才能实现以下目标: 有一个单独的 log4j2.xml 文件,供动态 Web 项目和所有 Java 子项目使用。到目前为止,唯一对我有用的是在 每个 项目的 src 文件夹中存在 log4j2.xml 文件的副本。 我尝试了各种方法,例如将配置文件放在共享文件夹中并将文件夹添加到每个项目的类路径中,或者将文件放在所有人都使用的 CommonLib 项目中,但每次我都保留收到一个 log4j 警告,提示找不到配置文件。

这是我的项目树:

Services (Dynamic web project)
   ^
   |__ BusinessCore (Java project)
   |         ^
   |         |___ DAO (Java project)
   |         |     ^
   |_________|_____|__CommonLib (Java project)

【问题讨论】:

    标签: java logging log4j log4j2


    【解决方案1】:

    听起来您正在尝试通过在类路径中包含 log4j2 配置文件来使用 log4j2 automatic configuration

    我进一步假设您正在尝试从 Eclipse 中运行您的代码。它与自动配置一起正常工作的唯一方法(无需通过系统属性指定配置文件的路径)是 log4j2 配置文件是否位于构建路径中包含的“源文件夹”内,或者如果您将配置jar 中的文件并将该 jar 添加到您的构建路径。

    因此,假设您使用的是 log4j2.xml 文件,如果您将 log4j2.xml 放在 CommonLib 项目的源文件夹中,并将该项目包含在其他项目的构建路径中(以及必要的 log4j2 jar ) 它应该可以正常工作。

    这是我建立示例项目的方式:

    根级项目文件夹的内容non-maven-web-project-log4j2

    BusinessCore的内容:

    CommonLib的内容:

    请注意,“config”文件夹是 Eclipse 中的源文件夹(稍后您将再次看到),并且 log4j2.xml 包含在 config 文件夹中。

    构建路径配置:

    non-maven-web-project-log4j2 对 BusinessCore 项目有依赖

    BusinessCore对CommonLib有依赖(没有截图,和上一个几乎一模一样)

    CommonLib 有一个名为 config 的额外源文件夹:

    这个配置文件夹包含 log4j2.xml 文件:

    每个项目在其源文件夹中都有一个简单的类,该类引用其子项目中的一个类。在非maven-web-project-log4j2项目中有一个类引用BusinessCore中的类,BusinessCore中有一个类引用CommonLib中的类。每个类都会生成一条 log4j2 消息。当我从根项目(非 maven-web-project-log4j2)运行该类时,我能够看到所有日志,并且日志具有我在 log4j2 配置文件中指定的模式,它确认 log4j2 能够找到它的配置。

    最后一点 - 我添加了额外的“config”源文件夹只是为了强调一点,您可以将 log4j2 配置文件放在构建路径中的任何源文件夹中,没有必要为其创建单独的文件夹如果您不想 - 您可以将其包含在 src 目录中,正如您在问题中已经指出的那样。

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2011-09-03
      • 1970-01-01
      • 2015-12-02
      • 2017-01-04
      相关资源
      最近更新 更多