MySQL 8.0.39
Source Code Documentation
|
#include <log_service_imp.h>
Static Public Member Functions | |
static void | init () |
Initialize a loadable logging service. More... | |
static void | exit () |
De-initialize a loadable logging service. More... | |
static int | run (void *instance, log_line *ll) noexcept |
Have the service process one log line. More... | |
static log_service_error | flush (void **instance) noexcept |
Flush any buffers. More... | |
static log_service_error | open (log_line *ll, void **instance) noexcept |
Open a new instance. More... | |
static log_service_error | close (void **instance) noexcept |
Close and release an instance. More... | |
static int | characteristics (void) noexcept |
Get characteristics of a log-service. More... | |
static log_service_error | parse_log_line (const char *line_start, size_t line_length) noexcept |
Parse a single line in an error log of this format. More... | |
static log_service_error | get_log_name (void *instance, char *buf, size_t bufsize) noexcept |
Provide the name for a log file this service would access. More... | |
|
staticnoexcept |
Get characteristics of a log-service.
<0 | an error occurred |
>=0 | characteristics (a set of log_service_chistics flags) |
|
staticnoexcept |
Close and release an instance.
Flushes any buffers.
Flushes any buffers.
instance | State-pointer that was returned on open. If memory was allocated for this state, it should be released, and the pointer set to nullptr. |
Flushes any buffers.
<0 | an error occurred |
=0 | success |
Flushes any buffers.
Flushes any buffers.
LOG_SERVICE_SUCCESS | success |
otherwise | an error occurred |
|
static |
De-initialize a loadable logging service.
|
staticnoexcept |
Flush any buffers.
This function will be called by the server on FLUSH ERROR LOGS. The service may write its buffers, close and re-open any log files to work with log-rotation, etc. The flush function MUST NOT itself log anything (as the caller holds THR_LOCK_log_stack)! A service implementation may provide a nullptr if it does not wish to provide a flush function.
This function will be called by the server on FLUSH ERROR LOGS. The service may write its buffers, close and re-open any log files to work with log-rotation, etc. The flush function MUST NOT itself log anything! A service implementation may provide a nullptr if it does not wish to provide a flush function.
instance | State-pointer that was returned on open. Value may be changed in flush. |
This function will be called by the server on FLUSH ERROR LOGS. The service may write its buffers, close and re-open any log files to work with log-rotation, etc. The flush function MUST NOT itself log anything (as the caller holds THR_LOCK_log_stack)! A service implementation may provide a nullptr if it does not wish to provide a flush function.
LOG_SERVICE_NOTHING_DONE | no work was done |
LOG_SERVICE_SUCCESS | flush completed without incident |
otherwise | an error occurred |
|
staticnoexcept |
Provide the name for a log file this service would access.
instance | instance info returned by open() if requesting the file-name for a specific open instance. nullptr to get the name of the default instance (even if it that log is not open). This is used to determine the name of the log-file to load on start-up. |
buf | Address of a buffer allocated in the caller. The callee may return an extension starting with '.', in which case the path and file-name will be the system's default, except with the given extension. Alternatively, the callee may return a file-name which is assumed to be in the same directory as the default log. Values are C-strings. |
bufsize | The size of the allocation in the caller. |
0 | Success |
-1 | Mode not supported (only default / only instances supported) |
-2 | Buffer not large enough |
-3 | Misc. error |
|
static |
Initialize a loadable logging service.
|
staticnoexcept |
Open a new instance.
ll | Optional arguments |
instance | If state is needed, the service may allocate and initialize it and return a pointer to it here. (This of course is particularly pertinent to components that may be opened multiple times, such as the JSON log writer.) This state is for use of the log-service component in question only and can take any layout suitable to that component's need. The state is opaque to the server/logging framework. It must be released on close. |
<0 | a new instance could not be created |
=0 | success, returned handle is valid |
LOG_SERVICE_SUCCESS | success, returned handle is valid |
otherwise | a new instance could not be created |
|
staticnoexcept |
Parse a single line in an error log of this format.
(optional)
line_start | pointer to the beginning of the line ('{') |
line_length | length of the line |
0 | Success |
!=0 | Failure (out of memory, malformed argument, etc.) |
|
staticnoexcept |
Have the service process one log line.
services: log sinks: basic structured dump writer
services: log sinks: classic syslog/EventLog writer (message only) label will be ignored (one will be generated from priority by the syslogger).
services: log sinks: JSON structured dump writer Will write structured info to stderr/file.
services: log filter: basic filtering
If a run function wishes to itself use error logging in case of severe failure, it may do so after FIRST securing the all further calls to run() will be rejected. "log_sink_test" implements an example of this.
The actual dragnet filtering engine is currently the default filter and therefore built-in (see components/mysql_server/log_builtins_filter.cc); this service is just a configuration language parser/compiler/decompiler; once it has set up the filter rule-set according to the user's instructions, it calls on the built-in engine to do the actual filtering.
Third parties could in theory write their own filtering language on top of that engine; they could also create their own filtering engine and use it instead of the provided one.
ll | The log line to filter |
instance | Instance (unused in dragnet as it's not currently multi-open; we just always use log_filter_dragnet_rules) |
Binary will be escaped according to JSON rules. If you should not be able to specify a label, one will be generated for you from the line's priority field.
If the message is not \0 terminated, it will be terminated.
This is intended for testing and debugging, not production.
Writes all fields. No escaping is done. Submits various events of its own to demonstrate the availability of the error event submission interface from within external service, as well as the correct functioning of said interface.