MySQL  8.0.21
Source Code Documentation
log_service_imp Class Reference

#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 int flush (void **instance) noexcept
 Flush any buffers. More...
 
static int open (log_line *ll, void **instance) noexcept
 Open a new instance. More...
 
static int close (void **instance) noexcept
 Close and release an instance. More...
 
static int characteristics (void) noexcept
 Get characteristics of a log-service. More...
 

Member Function Documentation

◆ characteristics()

int log_service_imp::characteristics ( void  )
staticnoexcept

Get characteristics of a log-service.

Return values
<0an error occurred
>=0characteristics (a set of log_service_chistics flags)

◆ close()

int log_service_imp::close ( void **  instance)
staticnoexcept

Close and release an instance.

Flushes any buffers.

Parameters
instanceState-pointer that was returned on open. If memory was allocated for this state, it should be released, and the pointer set to nullptr.
Return values
<0an error occurred
=0success

◆ exit()

static void log_service_imp::exit ( )
static

De-initialize a loadable logging service.

◆ flush()

int log_service_imp::flush ( void **  instance)
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! A service implementation may provide a nullptr if it does not wish to provide a flush function.

Parameters
instanceState-pointer that was returned on open. Value may be changed in flush.
Return values
<0an error occurred
=0no work was done
>0flush completed without incident

◆ init()

static void log_service_imp::init ( )
static

Initialize a loadable logging service.

◆ open()

int log_service_imp::open ( log_line ll,
void **  instance 
)
staticnoexcept

Open a new instance.

Parameters
lloptional arguments
instanceIf 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.
Return values
<0a new instance could not be created
=0success, returned hande is valid

◆ run()

int log_service_imp::run ( void *  instance,
log_line ll 
)
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.

Parameters
instanceState-pointer that was returned on open.
llThe log_line collection of log_items.
Return values
<0an error occurred
=0no work was done
>0number of processed entities

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.

Parameters
llthe log line to filter
instanceinstance (unused in dragnet as it's not currently multi-open; we just always use log_filter_dragnet_rules)
Return values
intnumber of matched 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.

Parameters
instanceinstance state
llthe log line to write
Return values
intnumber of accepted fields, if any

If the message is not \0 terminated, it will be terminated.

Parameters
instanceinstance's state
llthe log line to write
Return values
>=0number of accepted fields, if any
-1log was not open
-2could not sanitize log message
-3failure not otherwise specified

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.

Parameters
instanceinstance
llthe log line to write
Return values
intnumber of accepted fields, if any
<0failure

The documentation for this class was generated from the following files: