client-c  0.7.0
kaa_log.h File Reference

Simple logger for Kaa C Endpoint. More...

#include "../kaa_error.h"
#include "../platform/defaults.h"
+ Include dependency graph for kaa_log.h:

Go to the source code of this file.

Macros

#define KAA_LOG_LEVEL_NONE   0
 
#define KAA_LOG_LEVEL_FATAL   1
 
#define KAA_LOG_LEVEL_ERROR   2
 
#define KAA_LOG_LEVEL_WARN   3
 
#define KAA_LOG_LEVEL_INFO   4
 
#define KAA_LOG_LEVEL_DEBUG   5
 
#define KAA_LOG_LEVEL_TRACE   6
 
#define KAA_MAX_LOG_LEVEL   KAA_LOG_LEVEL_TRACE
 
#define KAA_LOG_LEVEL_FATAL_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_FATAL)
 
#define KAA_LOG_LEVEL_ERROR_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_ERROR)
 
#define KAA_LOG_LEVEL_WARN_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_WARN)
 
#define KAA_LOG_LEVEL_INFO_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_INFO)
 
#define KAA_LOG_LEVEL_DEBUG_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_DEBUG)
 
#define KAA_LOG_LEVEL_TRACE_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_TRACE)
 
#define KAA_LOGGER_T
 Kaa logger type. More...
 
#define KAA_LOG_FATAL(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_FATAL, err, __VA_ARGS__);
 
#define KAA_LOG_ERROR(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_ERROR, err, __VA_ARGS__);
 
#define KAA_LOG_WARN(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_WARN, err, __VA_ARGS__);
 
#define KAA_LOG_INFO(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_INFO, err, __VA_ARGS__);
 
#define KAA_LOG_DEBUG(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_DEBUG, err, __VA_ARGS__);
 
#define KAA_LOG_TRACE(logger, err,...)   kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_TRACE, err, __VA_ARGS__);
 
#define KAA_TRACE_IN(logger)   KAA_LOG_TRACE(logger, KAA_ERR_NONE, "--> %s()", __FUNCTION__);
 
#define KAA_TRACE_OUT(logger)   KAA_LOG_TRACE(logger, KAA_ERR_NONE, "<-- %s()", __FUNCTION__);
 

Typedefs

typedef struct kaa_logger_t kaa_logger_t
 
typedef uint8_t kaa_log_level_t
 Log level type. More...
 

Functions

kaa_error_t kaa_log_create (kaa_logger_t **logger_p, size_t buffer_size, kaa_log_level_t max_log_level, FILE *sink)
 Creates and initializes a logger instance. More...
 
kaa_error_t kaa_log_destroy (kaa_logger_t *logger)
 Deinitializes and destroys the logger instance. More...
 
kaa_log_level_t kaa_get_max_log_level (const kaa_logger_t *self)
 Retrieves the current log level. More...
 
kaa_error_t kaa_set_max_log_level (kaa_logger_t *self, kaa_log_level_t max_log_level)
 Sets the maximum log level. More...
 
kaa_error_t kaa_log_set_sink (kaa_logger_t *self, FILE *sink)
 Sets user sink for log output. More...
 
void kaa_log_write (kaa_logger_t *self, const char *source_file, int lineno, kaa_log_level_t log_level, kaa_error_t error_code, const char *format,...)
 Compiles a log message and puts it into the sink. More...
 

Detailed Description

Simple logger for Kaa C Endpoint.

Supports runtime limitation of the maximum log level to be logged. Expects externally provided and managed valid FILE* reference to log data to. Not thread safe.

Definition in file kaa_log.h.

Macro Definition Documentation

#define KAA_LOG_DEBUG (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_DEBUG, err, __VA_ARGS__);

Definition at line 175 of file kaa_log.h.

#define KAA_LOG_ERROR (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_ERROR, err, __VA_ARGS__);

Definition at line 157 of file kaa_log.h.

#define KAA_LOG_FATAL (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_FATAL, err, __VA_ARGS__);

Definition at line 151 of file kaa_log.h.

#define KAA_LOG_INFO (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_INFO, err, __VA_ARGS__);

Definition at line 169 of file kaa_log.h.

#define KAA_LOG_LEVEL_DEBUG   5

Use to log detailed information on the logic flow through the system

Definition at line 49 of file kaa_log.h.

#define KAA_LOG_LEVEL_DEBUG_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_DEBUG)

Definition at line 62 of file kaa_log.h.

#define KAA_LOG_LEVEL_ERROR   2

Use for runtime errors or unexpected conditions that the program might gracefully recover from

Definition at line 43 of file kaa_log.h.

#define KAA_LOG_LEVEL_ERROR_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_ERROR)

Definition at line 59 of file kaa_log.h.

#define KAA_LOG_LEVEL_FATAL   1

Use for severe errors that cause premature program termination

Definition at line 41 of file kaa_log.h.

#define KAA_LOG_LEVEL_FATAL_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_FATAL)

Definition at line 58 of file kaa_log.h.

#define KAA_LOG_LEVEL_INFO   4

Use for important or interesting runtime events that help understanding what the program is doing

Definition at line 47 of file kaa_log.h.

#define KAA_LOG_LEVEL_INFO_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_INFO)

Definition at line 61 of file kaa_log.h.

#define KAA_LOG_LEVEL_NONE   0

Use as the max log level to switch logging off

Definition at line 39 of file kaa_log.h.

#define KAA_LOG_LEVEL_TRACE   6

Use to log most detailed information intended for development and debugging purposes only

Definition at line 51 of file kaa_log.h.

#define KAA_LOG_LEVEL_TRACE_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_TRACE)

Definition at line 63 of file kaa_log.h.

#define KAA_LOG_LEVEL_WARN   3

Use for unexpected or undesirable runtime conditions that are not necessarily affecting the program

Definition at line 45 of file kaa_log.h.

#define KAA_LOG_LEVEL_WARN_ENABLED   (KAA_MAX_LOG_LEVEL >= KAA_LOG_LEVEL_WARN)

Definition at line 60 of file kaa_log.h.

#define KAA_LOG_TRACE (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_TRACE, err, __VA_ARGS__);

Definition at line 181 of file kaa_log.h.

#define KAA_LOG_WARN (   logger,
  err,
  ... 
)    kaa_log_write(logger, __FILE__, __LINE__, KAA_LOG_LEVEL_WARN, err, __VA_ARGS__);

Definition at line 163 of file kaa_log.h.

#define KAA_LOGGER_T

Kaa logger type.

Definition at line 70 of file kaa_log.h.

#define KAA_MAX_LOG_LEVEL   KAA_LOG_LEVEL_TRACE

Use KAA_LOG_TRACE as the max log level by default

Definition at line 55 of file kaa_log.h.

#define KAA_TRACE_IN (   logger)    KAA_LOG_TRACE(logger, KAA_ERR_NONE, "--> %s()", __FUNCTION__);

Definition at line 189 of file kaa_log.h.

#define KAA_TRACE_OUT (   logger)    KAA_LOG_TRACE(logger, KAA_ERR_NONE, "<-- %s()", __FUNCTION__);

Definition at line 190 of file kaa_log.h.

Typedef Documentation

typedef uint8_t kaa_log_level_t

Log level type.

Definition at line 77 of file kaa_log.h.

typedef struct kaa_logger_t kaa_logger_t

Definition at line 71 of file kaa_log.h.

Function Documentation

kaa_log_level_t kaa_get_max_log_level ( const kaa_logger_t self)

Retrieves the current log level.

Parameters
[in]selfPointer to a logger.
Returns
Log level. Returns KAA_LOG_NONE if this is NULL.
kaa_error_t kaa_log_create ( kaa_logger_t **  logger_p,
size_t  buffer_size,
kaa_log_level_t  max_log_level,
FILE sink 
)

Creates and initializes a logger instance.

Parameters
[in,out]loggerAddress of a pointer to the newly created logger.
[in]buffer_sizeSize of the log message buffer to allocate to the logger.
[in]max_log_levelMax log level to be used. Use KAA_LOG_NONE to switch the logger off.
[in]sinkValid, opened file to write logs to. Will use stdout if NULL is provided.
Returns
Error code.
kaa_error_t kaa_log_destroy ( kaa_logger_t logger)

Deinitializes and destroys the logger instance.

Parameters
[in,out]loggerPointer to a logger.
Returns
Error code.
kaa_error_t kaa_log_set_sink ( kaa_logger_t self,
FILE sink 
)

Sets user sink for log output.

Parameters
[in]selfPointer to a logger.
[in]sinkPointer to FILE structure where logs will be written to.
Returns
Error code.
void kaa_log_write ( kaa_logger_t self,
const char *  source_file,
int  lineno,
kaa_log_level_t  log_level,
kaa_error_t  error_code,
const char *  format,
  ... 
)

Compiles a log message and puts it into the sink.

The message format is as follows:

YYYY/MM/DD HH:MM:SS [LOG LEVEL] [FILE:LINENO] (ERROR_CODE) - MESSAGE

NOTE: Do not use directly. Use one of KAA_LOG_FATAL, KAA_LOG_ERROR, KAA_LOG_WARN, KAA_LOG_INFO, KAA_LOG_DEBUG, KAA_LOG_TRACE macros instead.

The log message gets truncated if it is longer than buffer_size specified to kaa_log_create.

Parameters
[in]selfPointer to a logger.
[in]source_fileThe source file that the message is logged from.
[in]linenoThe line number in the source file that the message is logged from.
[in]log_levelThe message log level to log with.
[in]error_codeThe message error code.
[in]formatThe format of the message to log.
kaa_error_t kaa_set_max_log_level ( kaa_logger_t self,
kaa_log_level_t  max_log_level 
)

Sets the maximum log level.

Parameters
[in]selfPointer to a logger.
[in]max_log_levelMax log level to be used. Use KAA_LOG_NONE to switch the logger off.
Returns
Error code.