Greenbone Vulnerability Management Libraries  10.0.0
Data Structures | Macros | Functions | Variables
logging.c File Reference

Implementation of logging methods. More...

#include "logging.h"
#include <errno.h>
#include <libgen.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <time.h>
#include <unistd.h>

Data Structures

struct  gvm_logging_t
 Logging stores the parameters loaded from a log configuration. More...
 

Macros

#define SYSLOG_NAMES
 

Functions

gchar * get_time (gchar *time_fmt)
 Returns time as specified in time_fmt strftime format. More...
 
static gint level_int_from_string (const gchar *level)
 Return the integer corresponding to a log level string. More...
 
static gint facility_int_from_string (const gchar *facility)
 Return the integer corresponding to a syslog facility string. More...
 
GSList * load_log_configuration (gchar *config_file)
 Loads parameters from a config file into a linked list. More...
 
void free_log_configuration (GSList *log_domain_list)
 Frees all resources loaded by the config loader. More...
 
void gvm_log_silent (const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer gvm_log_config_list)
 Returns immediately. More...
 
static void gvm_log_lock_init (void)
 Initialize logger_mutex mutex if it was not done before. More...
 
static void gvm_log_lock (void)
 Try to lock logger_mutex. More...
 
static void gvm_log_unlock (void)
 Unlock logger_mutex. More...
 
void gvm_log_func (const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer gvm_log_config_list)
 Creates the formatted string and outputs it to the log destination. More...
 
void log_func_for_gnutls (int level, const char *message)
 This function logs debug messages from gnutls. More...
 
void setup_log_handlers (GSList *gvm_log_config_list)
 Sets up routing of logdomains to log handlers. More...
 

Variables

static GMutex * logger_mutex = NULL
 

Detailed Description

Implementation of logging methods.

This file contains all methods needed for logging. To enable logging, methods in this file are called.

The module reuses glib datatypes and api for memory management and logging.

Macro Definition Documentation

◆ SYSLOG_NAMES

#define SYSLOG_NAMES

Function Documentation

◆ facility_int_from_string()

static gint facility_int_from_string ( const gchar *  facility)
static

Return the integer corresponding to a syslog facility string.

Parameters
facilityFacility name.
Returns
Facility integer if facility matches a facility name, else LOG_LOCAL0.

◆ free_log_configuration()

void free_log_configuration ( GSList *  log_domain_list)

Frees all resources loaded by the config loader.

Parameters
log_domain_listHead of the link list.

◆ get_time()

gchar* get_time ( gchar *  time_fmt)

Returns time as specified in time_fmt strftime format.

Parameters
time_fmtptr to the string format to use. The strftime man page documents the conversion specification. An example time_fmt string is "%Y-%m-%d %H:%M:%S".
Returns
NULL in case the format string is NULL. A ptr to a string that contains the formatted date time value. This value must be freed using glib's g_free.

◆ gvm_log_func()

void gvm_log_func ( const char *  log_domain,
GLogLevelFlags  log_level,
const char *  message,
gpointer  gvm_log_config_list 
)

Creates the formatted string and outputs it to the log destination.

Parameters
log_domainA string containing the message's log domain.
log_levelFlags defining the message's log level.
messageA string containing the log message.
gvm_log_config_listA pointer to the configuration linked list.

◆ gvm_log_lock()

static void gvm_log_lock ( void  )
static

Try to lock logger_mutex.

◆ gvm_log_lock_init()

static void gvm_log_lock_init ( void  )
static

Initialize logger_mutex mutex if it was not done before.

◆ gvm_log_silent()

void gvm_log_silent ( const char *  log_domain,
GLogLevelFlags  log_level,
const char *  message,
gpointer  gvm_log_config_list 
)

Returns immediately.

Parameters
log_domainA string containing the message's log domain.
log_levelFlags defining the message's log level.
messageA string containing the log message.
gvm_log_config_listA pointer to the configuration linked list.

◆ gvm_log_unlock()

static void gvm_log_unlock ( void  )
static

Unlock logger_mutex.

◆ level_int_from_string()

static gint level_int_from_string ( const gchar *  level)
static

Return the integer corresponding to a log level string.

Parameters
levelLevel name or integer.
Returns
Log level integer if level matches a level name, else 0.

◆ load_log_configuration()

GSList* load_log_configuration ( gchar *  config_file)

Loads parameters from a config file into a linked list.

Parameters
config_fileA string containing the path to the configuration file to load.
Returns
NULL in case the config file could not be loaded or an error occurred otherwise, a singly linked list of parameter groups is returned.

◆ log_func_for_gnutls()

void log_func_for_gnutls ( int  level,
const char *  message 
)

This function logs debug messages from gnutls.

Parameters
levelGnuTLS log level (integer from 0 to 99 according to GnuTLS documentation.
messageGnuTLS log message.

To enable GNUTLS debug messages, the environment variable OPENVAS_GNUTLS_DEBUG is to be set to the desired log level as described in the GNUTLS manual.

◆ setup_log_handlers()

void setup_log_handlers ( GSList *  gvm_log_config_list)

Sets up routing of logdomains to log handlers.

Iterates over the link list and adds the groups to the handler.

Parameters
gvm_log_config_listA pointer to the configuration linked list.

Variable Documentation

◆ logger_mutex

GMutex* logger_mutex = NULL
static