[[logging-settings]] === Logging settings in {kib} ++++ Logging settings ++++ Compatibility with the legacy logging system is assured until the end of the `v7` version. All log messages handled by `root` context (default) are forwarded to the legacy logging service. The logging configuration is validated against the predefined schema and if there are any issues with it, {kib} will fail to start with the detailed error message. NOTE: When you switch to the new logging configuration, you will start seeing duplicate log entries in both formats. These will be removed when the `default` appender is no longer required. Here are some configuration examples for the most common logging use cases: [[log-to-file-example]] ==== Log to a file Log the default log format to a file instead of to stdout (the default). [source,yaml] ---- logging: appenders: file: type: file fileName: /var/log/kibana.log layout: type: pattern root: appenders: [default, file] ---- [[log-in-json-ECS-example]] ==== Log in json format Log the default log format to json layout instead of pattern (the default). With `json` layout log messages will be formatted as JSON strings in https://www.elastic.co/guide/en/ecs/current/ecs-reference.html[ECS format] that includes a timestamp, log level, logger, message text and any other metadata that may be associated with the log message itself [source,yaml] ---- logging: appenders: json-layout: type: console layout: type: json root: appenders: [default, json-layout] ---- [[log-with-meta-to-stdout]] ==== Log with meta to stdout Include `%meta` in your pattern layout: [source,yaml] ---- logging: appenders: console-meta: type: console layout: type: pattern pattern: "[%date] [%level] [%logger] [%meta] %message" root: appenders: [default, console-meta] ---- [[log-elasticsearch-queries]] ==== Log {es} queries [source,yaml] -- logging: appenders: console_appender: type: console layout: type: pattern highlight: true root: appenders: [default, console_appender] level: warn loggers: - name: elasticsearch.query level: debug -- [[change-overall-log-level]] ==== Change overall log level. [source,yaml] ---- logging: root: level: debug ---- [[customize-specific-log-records]] ==== Customize specific log records Here is a detailed configuration example that can be used to configure _loggers_, _appenders_ and _layouts_: [source,yaml] ---- logging: appenders: console: type: console layout: type: pattern highlight: true file: type: file fileName: /var/log/kibana.log custom: type: console layout: type: pattern pattern: "[%date][%level] %message" json-file-appender: type: file fileName: /var/log/kibana-json.log layout: type: json root: appenders: [default, console, file] level: error loggers: - name: plugins appenders: [custom] level: warn - name: plugins.myPlugin level: info - name: server level: fatal - name: optimize appenders: [console] - name: telemetry appenders: [json-file-appender] level: all - name: metrics.ops appenders: [console] level: debug ---- Here is what we get with the config above: [options="header"] |=== | Context name | Appenders | Level | root | console, file | error | plugins | custom | warn | plugins.myPlugin | custom | info | server | console, file | fatal | optimize | console | error | telemetry | json-file-appender | all | metrics.ops | console | debug |=== NOTE: If you modify `root.appenders`, make sure to include `default`. // For more details about logging configuration, refer to the logging system documentation (update to include a link).