gpt4 book ai didi

java - 如何在多个类中有效地使用静态Logger?

转载 作者:行者123 更新时间:2023-11-30 07:25:06 25 4
gpt4 key购买 nike

我有三门课。

  • BaseLogger - 在这里我们创建 Logger 的静态实例。
  • BaseClass - 框架级类,包含几乎每个类中都使用的通用方法。
  • SomeClass - 它实现 BaseClass 并记录一些信息。

BaseLogger

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;


public class BaseLogger {
public final static Logger LOG = LogManager.getLogger(BaseLogger.class);
}

基类

  public class BaseClass extends BaseLogger{
//Some common methods used throughout Application.
}

某类

public class SomeClass extends BaseClass{
public static void main(String[] args){
LOG.info("Test Log");
}
}

输出

2016-04-28 16:52:11 INFO  BaseLogger:7 - Test Log 

必需:有人可以指导我如何实现以下目标。

 2016-04-28 16:52:11 INFO  SomeClass:5 - Test Log

由于我使用了静态,所以我不允许在 LogManager.getLogger 中使用this,并且我必须使用 BaseLogger 类名有人可以指导我如何打印当前类如果从其他类调用 LOG,则使用 name 而不是 BaseLagger。

最佳答案

日志记录框架(Java util、apache 日志记录、jboss 日志记录等)中定义的记录器模式 %c 从调用记录器方法的类中获取完全限定的类名。

要按照您需要的方式获取类名,您需要调整记录器模式以具有自定义模式,即 %X{classname}

这里,可以在使用 MDC.put(“classname”,com.xxx.xxx) 调用记录器之前在类中设置 classname

关于java - 如何在多个类中有效地使用静态Logger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com