我的 Java 记录器(比如 logback)如何找到我的代码的行号?

Cod*_*ero 3 java logging logback slf4j

我的 Java 记录器(比如 logback)如何找到我的代码的行号?

这是高性能系统中包含文件行号的性能问题吗?

是否需要抛出异常并分析堆栈跟踪来执行此操作,或者是否有其他技巧?

谢谢

zap*_*apl 5

行号被编译到.class文件中,获取它们肯定比不这样做更重要。

您可以获得堆栈跟踪而不通过抛出异常,Thread#getStackTrace()但这应该与创建异常的成本大致相同(您不需要抛出和捕获它)。

正如Thread.getStackTrace() 的成本有多高?

但是,仅是过多的日志记录就已经会大大降低系统的速度。

这是高性能系统中包含文件行号的性能问题吗?

你应该测试一下。如果它不是没有行号的性能问题,则很可能没有问题。这完全取决于您登录的位置和频率。


文档还提到了行号

生成行号信息并不是特别快。因此,除非执行速度不是问题,否则应避免使用它。