main/logger: Add log formatters and JSON structured logs
authorMatt Jordan <mjordan@digium.com>
Mon, 21 Sep 2015 12:26:00 +0000 (07:26 -0500)
committerMatt Jordan <mjordan@digium.com>
Tue, 29 Sep 2015 12:28:01 +0000 (07:28 -0500)
commit2d7a4a3357cbaea7acd8fb202c28512980508c88
tree11ae00b20119a5a539fb14a9ea1cbcac81102abb
parent9db74be3c075a7a4ab21d6e04d3e50266b3e8e14
main/logger: Add log formatters and JSON structured logs

When Asterisk is part of a larger distributed system, log files are often
gathered using tools (such as logstash) that prefer to consume information
and have it rendered using other tools (such as Kibana) that prefer a
structured format, e.g., JSON. This patch adds support for JSON formatted
logs by adding support for an optional log format specifier in Asterisk's
logging subsystem. By adding a format specifier of '[json]':

full => [json]debug,verbose,notice,warning,error

Log messages will be output to the 'full' channel in the following
format:

{
  "hostname": Hostname or name specified in asterisk.conf
  "timestamp": Date/Time
  "identifiers": {
    "lwp": Thread ID,
    "callid": Call Identifier
  }
  "logmsg": {
    "location": {
      "filename": Name of the file that generated the log statement
      "function": Function that generated the log statement
      "line": Line number that called the logging function
    }
    "level": Log level, e.g., DEBUG, VERBOSE, etc.
    "message": Actual text of the log message
  }
}

ASTERISK-25425 #close

Change-Id: I8649bfedf3fb7bf3138008cc11565553209cc238
CHANGES
configs/samples/logger.conf.sample
main/logger.c