gpt4 book ai didi

java - log.debug 会降低性能吗

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:19 25 4
gpt4 key购买 nike

我想在调试日志中写入一些日志,这些日志在具有信息日志级别的生产日志中不可用。那么这些额外的调试日志将如何影响性能呢?我的意思是,如果我们将日志级别设置为 INFO,记录器必须检查日志级别是什么,并发现需要忽略 log.debug。

那么这种额外的日志级别检查会影响性能吗?

部署时是否有任何自动删除 log.debug() 语句的方法?我的意思是在开发期间,log.debug 将在那里,我们可以调试。但是在生产部署期间,自动机制将删除所有 log.debug() 消息。我不确定这些是否可行。

最佳答案

So how will this extra debug logs affect the performance?

它会影响应用程序的性能,因为记录器是磁盘 I/O 调用(假设您正在写入文件系统)并且 DEBUG严格不建议在生产环境中使用日志级别

Is there any automagical way of removing the log.debug() statements while deployment?

不,没有神奇的方法可以删除 log.debug()语句,但是当您将日志记录级别设置为 INFO 时,只要您在将参数传递给 debug() 时不进行大量计算即可。方法,应该没问题。例如,如果您将记录器级别设置为 INFO 并假设您的代码中有以下两个记录器:

logger.debug(" Entry:: "); //this logger is fine, no calculations
//Below logger, you are doing computations to print i.e., calling to String methods
logger.debug(" Entry : product:"+product+" dept:"+dept);//overhead toString() calls

我建议使用slf4j这样您就可以通过使用 {} 来避免第二个记录器的计算开销(使用 MessageFormatter 替换为实际值),如下所示:

//Below logger product and dept toString() NOT invoked
logger.debug(" Entry : product:{} dept{}", product, dept);

更重要的一点是,slf4j 只是一个抽象,您可以在任何日志框架之间切换,您可以查看以下摘自 here 的文本.

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

关于java - log.debug 会降低性能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284499/

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