elastic/kibana

[logger] `log.debug` and `.trace` should prefer the lazy implementation

開放

#214,725 建立於 2025年3月17日

 (3 則留言) (0 個反應) (0 位負責人)TypeScript (8,021 個分叉)batch import
Feature:LoggingTeam:Coregood first issue

倉庫指標

星標
 (19,065 顆星)
PR 合併指標
 (平均合併 1天 16小時) (30 天內合併 999 個 PR)

描述

There are many places where we do patterns like log.debug(`${JSON.stringify({...})}`) in the Kibana code.

When the log level is set higher than debug, this implies unnecessary CPU blocks only to be discarded later.

We should audit all use cases like this and change them to the lazy form: ``````log.debug(() => ${JSON.stringify({...})})```.

@dgieselaar provided the following RegExp to find all use cases:

\.(?:debug|trace)\(\s*(?!((?:\([^)]*\)|\w+)\s*=>)).*?JSON\.stringify\s*\(

Please, bear in mind that some loggers don't support this. Make sure to only update the ones using the Logger from @kbn/logger.

Ideally, an autofixable ESlint rule would prevent this from happening again.

貢獻者指南