Logger
Per Process Log Collection
Captures StdOut and StdErr output
Merge into a single file (Unified Logging)
environment:
  - "ABC=42"
log_location: ./pc.global.log #if undefined or empty, no logs will be saved (if not defined per process)
processes:
  process2:
    command: "chmod 666 /path/to/file"
Process compose console log level
log_level: info # other options: "trace", "debug", "info", "warn", "error", "fatal", "panic"
processes:
  process2:
    command: "chmod 666 /path/to/file"
This setting controls the process-compose log level. The processes log level should be defined inside the process. It is recommended to support this definition with an environment variable in process-compose.yaml
Log Rotation
# unified log
version: "0.5"
log_level: info 
log_location: /tmp/pc.log
log_configuration:
  rotation:
    max_size_mb: 1  # the max size in MB of the logfile before it's rolled
    max_age_days: 3 # the max age in days to keep a logfile
    max_backups: 3  # the max number of rolled files to keep
    compress: true  # determines if the rotated log files should be compressed using gzip. The default is false
#process level logging (same syntax)
processes:
  someProc:
    command: "some command"
    log_configuration:
      rotation:
        max_size_mb: 1  # the max size in MB of the logfile before it's rolled
        max_age_days: 3 # the max age in days to keep a logfile
        max_backups: 3  # the max number of rolled files to keep
        compress: true  # determines if the rotated log files should be compressed using gzip. The default is false
Logger Configuration
log_configuration:
  fields_order: ["time", "level", "message"] # order of logging fields. The default is time, level, message
  disable_json: true                         # output as plain text. The default is false
  timestamp_format: "06-01-02 15:04:05.000"  # timestamp format. The default is RFC3339
  no_metadata: true                          # don't log process name and replica number
  add_timestamp: true                        # add timestamp to the logger. Default is false
  no_color: true                             # disable ANSII colors in the logger. Default is false
  flush_each_line: true                      # disable buffering and flush each line to the log file. Default is false
| Parameter Name | Description | Depends On | Default Value | 
|---|---|---|---|
| fields_order | Order of the logging fields. The default is time, level, message. In case one of the fields is omitted, it will be missing in the log as well. | disable_json: trueadd_timestamp: truefor"time" | ["time", "level", "message"] | 
| disable_json | Disables JSON logging format. Use Console Mode Format. | false | |
| timestamp_format | Sets the format of the logger timestamp. | add_timestamp: true | If disable_json: true:3:04PMIf disable_json: false:"2006-01-02T15:04:05Z07:00" | 
| no_metadata | Don't log the process name and replica number. | false | |
| add_timestamp | Add timestamp to the logger. Useful for processes without an internal logger. | false | |
| no_color | Disable ANSII colors in the log file. | disable_json: true | false | 
| flush_each_line | Disable buffering and flush each line to the log file. | false | 
Process Compose Internal Log
Default log location: /tmp/process-compose-$USER.log
It is recommended to add the following process configuration to your
process-compose.yaml:
This will allow you to spot any issues with the processes execution, without leaving the process-compose TUI.