The logging plugin produces output in 2 different formats, a classic text message and a JSON encoded string. The example shown below is for the same event but in the 2 different formats.
[2023-12-30T12:06:33.954984-07:00] ADODB.CRITICAL: Execution of statement failed: SELECT COUNT(*) FROM employee , / Error: 1146 Table 'employees.employee' doesn't exist [] []
[2023-12-30T12:09:44.054087-07:00] ADODB.CRITICAL:
{
"version":"1.0",
"ADOdbVersion":"v5.23.0-dev Unreleased",
"level":"500",
"shortMessage":"QUERY EXECUTION FAILURE",
"sqlStatement":
{
"sql":"SELECT COUNT(*) FROM employex",
"params":false
},
"errorCode":1146,
"errorMessage":"Table 'employees.employex' doesn't exist",
"metaErrorCode":-18,
"metaErrorMessage":"no such table",
"callStack":"",
"host":"WINDOWS-11",
"source":"cli",
"driver":"mysqli",
"php":"8.0.30",
"os":"WINNT"
}
If the $logBacktrace flag is set, then the “callStack” element of the JSON message contains an array of stack calls that identify the source and path of the error:
[{
"class":"ADOConnection",
"function":{
"name":"_Execute",
"args":["SELECT COUNT(*) FROM employeex"]
},
"file":"C:\/dev\/github\/ADOdb\/drivers\/adodb-mysqli.inc.php",
"line":1089
},{
"class":"ADODB_mysqli",
"function":{
"name":"execute",
"args":["SELECT COUNT(*) FROM employeex"]
},
"file":"C:\/dev\/github\/ADOdb\/drivers\/adodb-mysqli.inc.php",
"line":301
},{
"class":"ADODB_mysqli",
"function":{
"name":"GetOne",
"args":["SELECT COUNT(*) FROM employeex"]
},
"file":"C:\/dev\/tests\/monolog.php",
"line":59
}]
If the monolog plugin is used, then additional tags can be appended to the message as a JSON encoded array. These tags can be used in log management software for filtering purposes. In addition to any custom tags, the plugin can add a set of pre-defined system tags that describe the ADOdb installation using the setMessageTags() method. These tags can be added to both plain-text and JSON format messages.
{
"host":"WINDOWS-11",
"source":"cli",
"driver":"mysqli",
"php":"8.0.30",
"os":"WINNT",
"ADOdbVersion":"5.23.0-dev"
}
Any other custom tags are appended to the base as a simple key → value pair using the setMessageTag() method:
{
"environment":"PRODUCTION"
}