log4j:当我从另一个班级调用记录器时,日志中显示的班级名称不正确

斯里拉姆·斯里达兰(Sriram Sridharan)

基本上,当使用log4j时,我知道我们必须使用Logger.getLogger(MyClass.class)或Logger.getLogger(“ MyClass”)来启动Logger。

我的课程太多了,我不想在每个课程中都添加此语句。相反,我想做的是这样

Logger.info(this,"My message");

Logger是我编写的类(而不是log4j中的类),该类继而启动Logger类型的对象(org.apache.log4j.Logger)并继续执行消息。

这是我的Logger.java

package com.mypackage;

/**
 * @author Sriram Sridharan
 *Custom logging implementation using log4j
 */
public class Logger {
private static org.apache.log4j.Logger logger;

    /**
     * Writes an INFO log
     * @param oClass
     * @param message
     */
    public static void INFO(Object oClass, String message){

org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(oClass.getClass());
    logger.info(message);
}
}

现在,我有了自己的类,该类调用此Logger实现来记录事件。看起来像这样

public class MyClass {

    public void myMethod(){
        com.mypackage.Logger.INFO(this, "Hello, World");
    }
}

我的日志没有问题。他们很好。但是,日志中显示的类名称相同(记录器)。这是输出

 INFO [main] (Logger.java:18) - Hello, World

我希望这个

 INFO [main] (MyClass.java:18) - Hello, World

我要去哪里错了?

狮子座Literak

使用%cpattern输出类别//,getLogger("myCategory")而不是%C输出呼叫者类别。

这个想法是您有通用方法:

public static void debug(String category, String message) {
    Logger logger = org.apache.log4j.Logger.getLogger(category);
    logger.debug(message);
}

并且您的log4j配置包含您的模式:

%d{ISO8601} %c %m %n

这将打印

2014-02-21 14:38:120 YourCategory Your Message

因此,您无需为每个带有日志的类弄乱Logger的实例化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在我的班级中初始化另一个班级时需要 1 个参数

来自分类Dev

我如何在另一个班级中使用班级中的变量

来自分类Dev

当班级包含在另一个班级中时,为什么不继续声明班级工作

来自分类Dev

我可以在另一个班级中初始化一个班级吗?

来自分类Dev

Lua:我如何从另一个班级获得一个班级变量?

来自分类Dev

转换班级名称并传递给另一个班级

来自分类Dev

我如何从另一个班级叫双打?

来自分类Dev

在另一个班级内定位班级

来自分类Dev

检查班级是否扩展了另一个班级

来自分类Dev

访问另一个班级的班级私人成员

来自分类Dev

使用linq填充另一个班级的班级

来自分类Dev

检查班级是否扩展了另一个班级

来自分类Dev

仅从另一个班级创建班级/句柄

来自分类Dev

在另一个班级中使用班级

来自分类Dev

访问另一个班级的班级私人成员

来自分类Dev

如何从另一个班级调用连接班级?

来自分类Dev

从另一个班级运行一个班级后,访问该班级的成员

来自分类Dev

班级如何从一个班级切换到另一个班级?

来自分类Dev

log4j中的记录器为空

来自分类Dev

如何从另一个班级中读取列表

来自分类Dev

如果一个班级名称出现在另一个班级名称中,该怎么办?

来自分类Dev

jboss wildfly AS 中不显示 log4j 记录器语句

来自分类Dev

如何在另一个班级中编辑另一个班级的文本?

来自分类Dev

如何从另一个班级的班级共享偏好中获取值

来自分类Dev

CPP:在另一个班级中作为私人成员的班级

来自分类Dev

在班级中创建按钮以在另一个班级中使用

来自分类Dev

如何从我在另一个班级创建的特殊组件中返回值

来自分类Dev

当我从“学生班级”内部调用它时,为什么会给我一个错误?

来自分类Dev

当我移动到另一个视图控制器时弹出显示

Related 相关文章

  1. 1

    在我的班级中初始化另一个班级时需要 1 个参数

  2. 2

    我如何在另一个班级中使用班级中的变量

  3. 3

    当班级包含在另一个班级中时,为什么不继续声明班级工作

  4. 4

    我可以在另一个班级中初始化一个班级吗?

  5. 5

    Lua:我如何从另一个班级获得一个班级变量?

  6. 6

    转换班级名称并传递给另一个班级

  7. 7

    我如何从另一个班级叫双打?

  8. 8

    在另一个班级内定位班级

  9. 9

    检查班级是否扩展了另一个班级

  10. 10

    访问另一个班级的班级私人成员

  11. 11

    使用linq填充另一个班级的班级

  12. 12

    检查班级是否扩展了另一个班级

  13. 13

    仅从另一个班级创建班级/句柄

  14. 14

    在另一个班级中使用班级

  15. 15

    访问另一个班级的班级私人成员

  16. 16

    如何从另一个班级调用连接班级?

  17. 17

    从另一个班级运行一个班级后,访问该班级的成员

  18. 18

    班级如何从一个班级切换到另一个班级?

  19. 19

    log4j中的记录器为空

  20. 20

    如何从另一个班级中读取列表

  21. 21

    如果一个班级名称出现在另一个班级名称中,该怎么办?

  22. 22

    jboss wildfly AS 中不显示 log4j 记录器语句

  23. 23

    如何在另一个班级中编辑另一个班级的文本?

  24. 24

    如何从另一个班级的班级共享偏好中获取值

  25. 25

    CPP:在另一个班级中作为私人成员的班级

  26. 26

    在班级中创建按钮以在另一个班级中使用

  27. 27

    如何从我在另一个班级创建的特殊组件中返回值

  28. 28

    当我从“学生班级”内部调用它时,为什么会给我一个错误?

  29. 29

    当我移动到另一个视图控制器时弹出显示

热门标签

归档