相关疑难解决方法(0)

Log4J:创建Logger实例的策略

我决定将Log4J日志框架用于新的Java项目.我想知道我应该使用什么策略来创建/管理Logger实例以及为什么?

  • 每个类的一个Logger实例,例如

    class Foo {
        private static final Logger log = Logger.getLogger(Foo.class);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 每个线程一个Logger实例
  • 每个应用程序的一个Logger实例
  • 水平切片:应用程序每层中的一个Logger实例(例如视图层,控制器层和持久层)
  • 垂直切片:应用程序功能分区中的一个Logger实例

注意:在这些文章中已经在某种程度上考虑了这个问题:

什么是创建Log4j记录器的开销

java logging log4j

69
推荐指数
4
解决办法
6万
查看次数

Thread.getStackTrace()有多昂贵?

在日志记录系统中,每个日志输出都由辅助类完成,并使用此方法

public void debug(String message) {
    Logger logger = Logger.getLogger(getCallingClass());
    logger.debug(message);
}
...
public Class getCallingClass() {
/*
Calls Thread.getStackTrace() and back traces until the class on the stack trace 
!= this.getClass(). 
*/
    return classFound;
}
Run Code Online (Sandbox Code Playgroud)

它的运行成本有多高,是否会有显着的性能提升?

java logging

17
推荐指数
4
解决办法
2万
查看次数

标签 统计

java ×2

logging ×2

log4j ×1