MPC node system logging can be configured in the MPC node's configuration file. You can configure a default logger like this:

## Default Logger Configuration

```toml
[Log]

# Log level. Possible values are INFO, WARN, ERROR and DEBUG. Defaults to INFO if not set.
  Level = "INFO"

# Log format. Possible values are TEXT and JSON. If not specified it default to TEXT.
  Format = "TEXT"

# If specified, logs will be written to this file. If empty, logs will be written to standard
  # out.
  FilePath = ""

# Set to true to log the filename and line number where the logging operation occurred.
  ReportCaller = true
```

## Advanced Logging

For more advanced logging configuration, you can specify one or more of the `[Log.X]` configuration sections. If any of these configurations are specified, they will override the top level configuration.

### Logging to stdout

```toml
# This logger logs to standard out.
[Log.StdoutLogger]

# Log level. Possible values are INFO, WARN, ERROR and DEBUG. If not specified it default
  # to INFO.
  Level = "INFO"

# Log format. Possible values are TEXT and JSON. If not specified it default to TEXT.
  Format = "TEXT"

# Set to true to log the filename and line number where the logging operation occurred.
  ReportCaller = true
```

### Logging to files

It is also possible to log to one or more files, by specifying one or more sections like this:

```toml
[[Log.FileLoggers]]

# Log level. Possible values are INFO, WARN, ERROR and DEBUG. If not specified it default
  # to INFO.
  Level = "INFO"

# Log format. Possible values are TEXT and JSON. If not specified it default to TEXT.
  Format = "TEXT"

# Log to this file. If it does not exist, it will be created.
  FilePath = "/path/to/a/logfile"

# Set to true to log the filename and line number where the logging operation occurred.
  #ReportCaller = true
```

### Logging to syslog

Logging to syslog can be configured like this:

```toml
[Log.SyslogLogger]

# Log level. Possible values are INFO, WARN, ERROR and DEBUG. Defaults to INFO if not set.
	Level = "INFO"

# Log format. Possible values are TEXT and JSON. If not specified it default to TEXT.
  Format = "TEXT"

# Set to true to log the filename and line number where the logging operation occurred.
  #ReportCaller = true
```

### Logging to AWS CloudWatch

```toml
[Log.CloudWatchLogger]

# Log level. Possible values are INFO, WARN, ERROR and DEBUG. If not specified it default
  # to INFO.
  Level = "INFO"

# Specify the AWS region here. This field is required.
  #Region = ""

# Specify the AWS log group name. This field is required.
  #LogGroupName = ""

# Specify the AWS log stream name. This field is required.
  #LogStreamName = ""

# Set to true to log the filename and line number where the logging operation occurred.
  #ReportCaller = true
```

## Separate Log Configuration

In some cases it may make sense to configure logging in a separate configuration file, instead of the primary MPC node config file. As with the main configuration, it works as follows: When the MPC node starts up, it first attempts to base64 decode the contents of the `LOG_CONFIG_BASE64` environment variable. If this is not defined, it attempts to read the log configuration from the file specified in `LOG_CONFIG_FILE`.

If no logging is configured, the default configuration will be used, as shown here:

```toml
# Log level. If not specified it defaults to "info".
# Possible values are "panic", "fatal", "error", "warn", "warning", "info", "debug", "trace".
Level = "INFO"

# File path. If specified, the node will log to the file at path. Otherwise stdout is used.
FilePath = ""

# Report caller. If true, the log will show where the log call was made. Defaults to true.
ReportCaller = true
```
