gpt4 book ai didi

java - 我是否需要在我的所有类中都有一个 Logger 的静态实例来实现 log4j?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:51 26 4
gpt4 key购买 nike

Log4j 与我的应用程序完美结合,但我的问题是它在那里除了在我的应用程序的所有类中使用以下“记录器”实例之外,还有其他任何有效的方法来实现它吗?

public Class myClassName{
private static Logger logger = Logger.getLogger("myClassName");

public String myMethod(){
try{
....
}catch (Exception e) {
logger.error("Location:MyMethod:" + e.getMessage());
return "failed";
}
}
}

最佳答案

您可以为您的所有类使用一个记录器,但缺点是您的日志消息不再显示您的哪个类称为记录器,因为所有类都使用同一个记录器和一个名称。 Logger.getLogger("myClassName") 用于将记录器的名称设置为类名,以便通过获取记录器名称轻松地将类名添加到日志消息中。

这也可以,但不推荐:

public Class MyLogger{
public static Logger logger = Logger.getLogger("myLoggerName");
}

--

public Class myClassName{
public String myMethod(){
try{
//....
}catch (Exception e) {
MyLogger.logger.error("Location:MyMethod:" + e.getMessage());
return "failed";
}
}
}

我认为您可以通过反射添加类名(即使您只使用一个记录器),但这会非常慢并且也不推荐用于生产用途。

关于java - 我是否需要在我的所有类中都有一个 Logger 的静态实例来实现 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863615/

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