mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
## Release Notes Kibana logging's pattern layout, used by default for the console appender, will now use a new default pattern layout `[%date][%level][%logger] %message %error`. This will include the error name and stack trace if these were included in the log entry. To opt out of this behavior users can omit the `%error` placeholder from their log pattern config in kibana.yml e.g.: ``` logging: appenders: console: type: console layout: type: pattern pattern: "[%date][%level][%logger] %message" ``` ## Summary Previously, when we pass the error in meta, the information related to stacktrace and error message was not available in console. This PR changed the default pattern to also include error information if it is provided in meta (similar to the way that the logging happens when error is directly passed to logger.error). New pattern: (added `%error` at the end) ``` [%date][%level][%logger] %message %error ``` Here you can see the difference: Logger: ``` server.logger.error( `Unable to create Synthetics monitor ${monitorWithNamespace[ConfigKey.NAME]}`, { error: e } ); ``` #### Before  #### After  ### Alternative We could also change the MetaConversion and include this information, but we might have additional meta information which I am not sure if it is OK to be logged by default. Let me know if you prefer changing MetaConversion instead of adding a new error conversion. <details> <summary>Code changes for MetaConversion</summary> ``` function isError(x: any): x is Error { return x instanceof Error; } export const MetaConversion: Conversion = { pattern: /%meta/g, convert(record: LogRecord) { if (!record.meta) { return ''; } const { error, ...rest } = record.meta; const metaString = Object.keys(rest).length !== 0 ? JSON.stringify(rest) : ''; let errorString = ''; if (isError(record.meta?.error)) { errorString = record.meta?.error.stack || ''; } return [metaString, errorString].filter(Boolean).join(' '); }, }; ``` </details> Here is how adjusting meta will look like in this case:  |
||
---|---|---|
.. | ||
development/plugins/expressions/public | ||
extend | ||
reference | ||
release-notes | ||
settings-gen | ||
CHANGELOG.asciidoc | ||
docset.yml |