Skip to content

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

@afharo

Description

@afharo

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Feature:LoggingTeam:CoreCore services & architecture: plugins, logging, config, saved objects, http, ES client, i18n, etc

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions