当前位置: 首页 > 知识库问答 >
问题:

log4j构建一致的日志记录

芮瑾瑜
2023-03-14

我试图实现log4j日志记录MyTest类。代码的包结构如下所述。目前我的log4j.properties放在try包的资源下。

我有时确实会得到日志,但有时调试器会显示“log4j: WARN无法为记录器找到附加程序”所以我最后得到了:

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

基本页。班

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

最基本的。班

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

我的测试。班

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();
    }
}

共有1个答案

姚淳
2023-03-14
  1. 我应该在哪里放置log4j.properties来获得MyTest中一致的日志?

一般来说,只要放一个log4j。将xml文件放入src/main/resourcessrc/test/resources中,让log4j自己找到它:不需要代码,默认的log4j初始化将获取它。

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

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

Log4j-属性-文件-多个日志记录器-在同一类

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

log4j-多记录器-级别和追加器

编辑1:

你能帮我关于log4j.properties何时以及如何移动到目标/类的信息吗?

log4j。构建项目时,属性文件将自动移动。但是文件应该位于src/main/resource/中,以便自动移动。

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

 类似资料:
  • 主要内容:Logger日志方法的例子,Logger的日志方法Logger 类有多种方法来处理日志记录活动。Logger 类不允许我们实例化一个新的 Logger 实例,但它支持两种获取 Logger 对象的静态方法: 两个方法中的第一个返回应用程序实例的根记录器,它没有名称。 任何其他命名的 Logger 对象实例都是通过传递记录器的名称由第二种方法获得的。记录器的名称可以是您传递的任何字符串,通常是类或包名称,如下所述: Logger日志方法的例子 Lo

  • 当前的日志阈值是关于日志级别(TRACE,DEBUG,INFO,WARN,ERROR和FATAL)对我来说是不够的。我有一个千兆字节的日志从第三方库写入紧急情况下的错误类别。我不想打开这个日志,因为我想看到这个问题日志。大多数日志都是连续重复的堆栈跟踪。所以我想要一种可以 1)跳过日志,如果阈值(kb/sec)是真实的(我的意思是当我们写很多日志-我们可能会跳过一些)或 2)如果在一段时间内打印了

  • 我正在尝试创建基于不同级别的“不同”附加器,但到目前为止,我找不到一种隔离日志级别的方法。。。。 我需要一种方法,能够土地只有INFO优先排序的日志被追加。因为INFO级别的日志记录也会显示DEBUG标记的日志记录器...这对我没有帮助。 另一件事是,对于“相同”包,我无法定义不同的日志附加器: 在这里,我得到了如下错误:

  • 问题是它不在catalina- .log中记录,而是在catalina中记录。似乎没有正确配置appender。文件catalina似乎是从log4j.appender.catalina.file=${catalina.home}/logs/catalina创建的。在配置中。 有人能帮我解决这个问题吗?

  • 我知道有很多关于这个的问题,但是我确实经历了所有的问题,并且有点困惑自己,我列出了我遵循的步骤,请让我知道我把它搞砸了。 1) 我只想在应用程序级别使用Log4j,所以需要复制WL_HOME/server/lib/wllog4j。jar和log4j。jar在Domail_Home/Lib? 2) 我使用的是Maven,我在pom中添加了Log4j依赖项。xml[war]。我把战争藏在耳朵里。 3)

  • 我想用SpringBoot1.5配置log4j。10.释放。我排除了,并添加了log4j依赖项。在spring启动之前,我有所有日志,但在spring启动之后,init日志停止。 控制台日志: 和log4j2。xml文件: 你知道我做错了什么吗?