Log configuration

Command line

Command line flag can be used to turn in CodeChecker debug mode. The different subcommands can be given a -v flag which needs a parameter. Possible values are debug, debug_analyzer and info. Default is info.

debug_analyzer switches analyzer related logs on:

CodeChecker check <name> -b <build_command> --verbose debug_analyzer

Turning on CodeChecker debug level logging is possible for the most subcommands:

CodeChecker check <name> -b <build_command> --verbose debug
CodeChecker server -v <view_port> --verbose debug

Change log configuration for the server

The log level for a server can be changed in two ways.

1. At the server start

Debug log can be enabled like this at the server start.

Codechecker server ... --verbose debug

The log levels can not be changed after the server was started.

2. While the server is running

The log configuration can be changed for a running server if it was started in an environment where the CC_LOG_CONFIG_PORT environment variable is set.

CC_LOG_CONFIG_PORT='8888' Codechecker server ...

The running server will accept log configurations on the configured 8888 port. This way the log configuration can be changed without a server restart.

Sending new configuration to a running server

Sending a new configuration to the server can be done easily with scripts/send_log_config.py like this:

./send_log_config.py -c new_log_cfg.conf -p 8888

Sending a configuration can be done only on the same machine where the server was started. See further details here.

Example debug log configuration with multiple handlers

For more information see: logging-cookbook or logging.config

{
  "version": 1,
  "disable_existing_loggers": true,
  "formatters": {
    "brief": {
      "format": "[%(asctime)s] - %(message)s",
      "datefmt": "%Y-%m-%d %H:%M"
    },
    "precise": {
      "format": "[%(asctime)s] {%(name)s} [%(process)d] <%(thread)d> - %(filename)s:%(lineno)d %(funcName)s() - %(message)s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },
  "loggers": {
    "analyzer": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    },
    "analyzer.tidy": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    },
    "analyzer.clangsa": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    },
    "server": {
      "level": "DEBUG",
      "handlers": [ "console", "file" , "daily_log"]
    },
    "buildlogger": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    },
    "report": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    },
    "system": {
      "level": "DEBUG",
      "handlers": [ "console", "file", "daily_log" ]
    },
    "profiler": {
      "level": "DEBUG",
      "handlers": [ "console", "file" ]
    }
  },
  "handlers": {
    "console": {
      "class": "logging.StreamHandler",
      "level": "DEBUG",
      "formatter": "brief",
      "stream": "ext://sys.stdout"
    },
    "file": {
      "class": "logging.handlers.RotatingFileHandler",
      "formatter": "precise",
      "level": "DEBUG",
      "filename": "file.log",
      "encoding": "utf-8",
      "maxBytes": 1000000,
      "backupCount": 3
    },
    "daily_log": {
      "class": "logging.handlers.TimedRotatingFileHandler",
      "formatter": "precise",
      "level": "DEBUG",
      "filename": "daily.log",
      "encoding": "utf-8",
      "when": "D",
      "interval": 1
    }
  }
}