[[logging-settings]] === Logging settings in {kib} ++++ Logging settings ++++ {kib} relies on three high-level entities to set the logging service: appenders, loggers, and root. - Appenders define where log messages are displayed (stdout or console) and their layout (`pattern` or `json`). They also allow you to specify if you want the logs stored and, if so, where (file on the disk). - Loggers define what logging settings, such as the level of verbosity and the appenders, to apply to a particular context. Each log entry context provides information about the service or plugin that emits it and any of its sub-parts, for example, `metrics.ops` or `elasticsearch.query`. - Root is a logger that applies to all the log entries in {kib}. Refer to the <> for common configuration use cases. To learn more about possible configuration values, go to {kibana-ref}/logging-service.html[{kib}'s Logging service]. [[log-settings-examples]] ==== Examples 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: [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: [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: [console-meta] ---- [[log-elasticsearch-queries]] ===== Log {es} queries [source,yaml] -- logging: appenders: console_appender: type: console layout: type: pattern highlight: true root: appenders: [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: [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).