我已经在网上搜索了很长一段时间,为了找到我的问题的答案,但是我能找到的都是用Maven实现的多模块项目。我的项目不使用maven,因此它无助于我的场景。
我正在构建一个运行在Tomcat 8上的Java8 J2EE web服务项目,它被分成几个单独的项目(参见下面的项目树)。我没有使用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)发布于 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目录中,正如您在问题中已经指出的那样。
https://stackoverflow.com/questions/39087800
复制相似问题