首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有maven的多模块log4j2 web项目中配置J2EE

在没有maven的多模块log4j2 web项目中配置J2EE
EN

Stack Overflow用户
提问于 2016-08-22 20:02:38
回答 1查看 1.3K关注 0票数 3

我已经在网上搜索了很长一段时间,为了找到我的问题的答案,但是我能找到的都是用Maven实现的多模块项目。我的项目不使用maven,因此它无助于我的场景。

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

如何实现以下目标:拥有一个log4j2.xml文件,供动态web项目和所有Java子项目使用。到目前为止,唯一对我起作用的是在项目的每个的src文件夹中都有log4j2.xml文件的副本。我尝试过各种方法,例如将配置文件放置在共享文件夹中,并将该文件夹添加到每个项目的类路径中,或者将该文件放置在CommonLib项目中,这是所有人都使用的,但每次我都会收到log4j警告,表示没有找到配置文件。

这是我的项目树:

代码语言:javascript
复制
Services (Dynamic web project)
   ^
   |__ BusinessCore (Java project)
   |         ^
   |         |___ DAO (Java project)
   |         |     ^
   |_________|_____|__CommonLib (Java project)
EN

回答 1

Stack Overflow用户

发布于 2017-04-12 05:08:22

听起来,您试图通过在类路径中包含log4j2自动配置配置文件来使用log4j2。

我还假设您正在尝试在Eclipse中运行代码。使用自动配置(不通过system属性指定配置文件的路径)的唯一方法是,如果log4j2配置文件位于构建路径中的“源文件夹”中,或者将配置文件放入jar中并将该jar添加到构建路径中。

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

下面是我如何建立一个示例项目:

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

BusinessCore含量

CommonLib含量

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

构建路径配置:

非maven-web- project -log4j2依赖于BusinessCore项目。

BusinessCore依赖于CommonLib (没有屏幕截图,它几乎与前面的截图相同)

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

这个config文件夹包含log4j2.xml文件:

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39087800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档