[[logging-settings]]
=== Logging settings in {kib}
++++
<titleabbrev>Logging settings</titleabbrev>
++++

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).
