【问题标题】:log4j structuring for consistent logging用于一致日志记录的 log4j 结构
【发布时间】:2015-11-25 09:37:34
【问题描述】:

我正在尝试为 MyTest 类实现 log4j 日志记录。代码的包结构如使用下面的代码所述。目前我的 log4j.properties 放在 trial 包的资源下。

我有时确实会得到日志,但有时调试器会显示“log4j:WARN No appenders could be found for logger”。所以我最终得到:

  1. 我应该将 log4j.properties 放在哪里才能在 MyTest 中始终如一地获取日志?
  2. 同一个项目可以在不同的包中有多个 log4j.properties 吗?
  3. 调试器/编译器的 log4j 属性如何与调用它的类关联?

BasicPage.class

package com.trial.pages;
    public class BasicPage{
        protected static final Logger pageLogger = Logger.getLogger(BasicPage.class);
        <some code goes here>
    }

FirstPage.class

package com.trial.pages.mobile;
import package com.trial.pages;
public class FirstPage extends BasicPage {
     public void pageMethod() {
         pageLogger.info("These are logs from the Pages.");
     }
}

BasicTest.class

package com.core.data;
public class BasicTest{
    protected static final Logger testLogger = Logger.getLogger(BasicTest.class);
    <some code goes here>
}

MyTest.class

package com.trial.tests.mobile;
import com.trial.pages.mobile.FirstPage;
import com.core.data.BasicTest;
public class MyTest extends BasicTest{
    public void someMethod(){
        testLogger.info("These are the logs from the test activities.");
        new FirstPage.pageMethod();
    }
}

【问题讨论】:

  • 您想要一个还是多个日志文件?
  • 更喜欢使用单个文件

标签: java logging log4j project-structure


【解决方案1】:
  1. 我应该将 log4j.properties 放在哪里才能在 MyTest 中始终如一地获取日志?

一般只需将log4j.xml文件放入src/main/resourcessrc/test/resources中,让log4j自行查找:无需代码,默认log4j初始化即可获取。

2.同一个项目可以在不同包中有多个log4j.properties吗?

我不会那样做,因为类加载器只接受找到的第一个。您可以在单个属性文件中为不同的记录器进行多种配置。

log4j-properties-file-multiple-loggers-in-same-class

how-can-i-create-2-separate-log-files-with-one-log4j-config-file

log4j-multiple-loggers-levels-and-appenders


EDIT1:

您能帮我提供有关何时以及如何进行的信息吗? log4j.properties 移动到目标/类 [propertyconfigurator 看起来 里面]

log4j.property 文件将在您构建项目时自动移动。但该文件应该在src/main/resource/ 中以便自动移动。

如果是这种情况,您不需要以编程方式配置属性配置器。 Log4j 可以直接使用。

【讨论】:

  • log4j.properties 已经在 trial 包的资源文件夹中,但在执行期间何时会找到此文件以及何时找不到此文件仍然存在不一致。
  • @nullpointer 为什么它应该是一个包?对于整个应用程序的全局访问,只需将其放在 src/main/resources 文件夹中。还是我错了?
  • 也尝试过这样做.. 你能帮我了解一下 log4j.properties 何时以及如何移动到目标/类的信息吗[propertyconfigurator 在里面查看]
  • 谢谢 :) ...想通了..一些 maven 参数将被更改以获取 core&lt;resource&gt; &lt;directory&gt;../trial/src/main/resources&lt;/directory&gt; &lt;/resource&gt; 的目标/类中的资源,然后是属性配置器.configure 可以找出资源的确切位置。可能会具体到包含多个模块的项目。
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 2011-07-14
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2020-12-07
  • 1970-01-01
相关资源
最近更新 更多