当前位置: 首页 > 面试题库 >

来自log4j.Logger的getLogger的通用方法

燕扬
2023-03-14
问题内容

而不是在每个类上指定类名:

log = Logger.getLogger(Foo.class);
log = Logger.getLogger(Bar.class);
log = Logger.getLogger(Test.class);

可以使用吗:

log = Logger.getLogger(this.getClass());

这将意味着什么?


问题答案:

如果创建子类,则日志消息将记录到子类的记录器中。

package pkgone;
public class SuperType {
    private Logger log = Logger.getLogger(this.getClass());
    public void someAction() {
        log.info("Doing something");
    }
}

package pkgtwo;
import pkgone.SuperType;
public class SubType extends SuperType {
    // for instances of SubType, the log object in SuperType
    // will get initialized with SubType's class object
}

// some code somewhere that uses SubType
SubType obj = new SubType();
obj.someAction();

在上面的示例中,“正在执行操作”将被记录到pkgtwo.SubType记录器而不是pkgone.SuperType记录器,这可能是您想要的,也可能不是。



 类似资料:
  • 问题内容: 我正在尝试在收到C2DM消息时显示一个简单的通知。服务提供给UI,但仍在主线程上运行。我见过有人声称您可以通过服务创建和显示通知。 } 我不知道为什么会抛出该异常。 问题答案: 首先,引发异常是因为创建的通知没有引用该对象的视图对象(contentView属性设置为null)。您必须在显示通知之前调用setLatestEventInfo。 其次,不赞成使用您使用的构造函数。请使用Not

  • 这里是一个示例代码,重现我得到的错误,也得到一个工作示例从您的有益的答复! (好的,添加一个关于从生成的Python/Jython结果映射回Java对象的其他问题) (@Joonas,对不起,我修改了我的代码,现在我无法返回到我以前的错误) Python部分:(mymodule.py) 编辑: 部分回答我自己,对于内部的问题(内部评论): (实际上我觉得我的答案和代码很难看,但它工作,似乎可以取消

  • 但我收到一条错误消息:

  • 我使用水槽代理通过水槽代理收集外部数据。外部数据批次几乎是每 10 秒 1MB。我按如下方式配置了水槽代理。 我按以下方式激活了代理。 可惜后来发现netcat source运行良好,channel或者sink出了问题。从Ubuntu的资源监视器,我可以看到以下性能。网络性能。蓝色曲线表示输入,而红色曲线表示在没有其他应用程序运行网络io的情况下的输出,我确信这个图展示了我的Flume代理发生了什

  • 问题内容: 我想使用泛型类型来确保方法的参数具有相同的类型,如下所示: 我假设传递给此方法的两个参数(a和b)始终必须具有相同的类型。但是令我惊讶的是,无论传递了什么参数,我都能将任何类型的参数(甚至是基本参数)传递给方法x,就好像T被抹去了Object一样。 到目前为止,我发现的唯一解决方法是使用“ extends”,如下所示: 但是,尽管我可以忍受,但这并不是我想要的。 有没有一种方法可以使用

  • 我是Maven新手,尝试使用Log4j编译一个简单的程序。当我使用mvn compile编译项目时,它会下载所有jar。我已经将依赖项添加到pom中。xml,但不确定为什么它不能识别slf4j。罐子下面是pom的程序和代码片段。xml 错误: 组织。阿帕奇。专家生命周期。LifecycleExecutionException:无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7。0:M