log4c  1.2.1
Data Structures | Macros | Typedefs | Functions
appender.h File Reference

Implement this interface for your own strategies for printing log statements. More...

#include <log4c/defs.h>
#include <log4c/layout.h>
#include <stdio.h>

Go to the source code of this file.

Data Structures

struct  log4c_appender_type
 log4c appender type class More...
 

Macros

#define log4c_appender_type_define(a_type)
 

Typedefs

typedef struct __log4c_appender log4c_appender_t
 
typedef struct log4c_appender_type log4c_appender_type_t
 log4c appender type class More...
 

Functions

const LOG4C_API log4c_appender_type_tlog4c_appender_type_get (const char *a_name)
 
const LOG4C_API log4c_appender_type_tlog4c_appender_type_set (const log4c_appender_type_t *a_type)
 
LOG4C_API log4c_appender_tlog4c_appender_get (const char *a_name)
 
LOG4C_API log4c_appender_tlog4c_appender_new (const char *a_name)
 
LOG4C_API void log4c_appender_delete (log4c_appender_t *a_appender)
 
const LOG4C_API char * log4c_appender_get_name (const log4c_appender_t *a_appender)
 
const LOG4C_API log4c_appender_type_tlog4c_appender_get_type (const log4c_appender_t *a_appender)
 
const LOG4C_API log4c_layout_tlog4c_appender_get_layout (const log4c_appender_t *a_appender)
 
LOG4C_API void * log4c_appender_get_udata (const log4c_appender_t *a_appender)
 
const LOG4C_API log4c_appender_type_tlog4c_appender_set_type (log4c_appender_t *a_appender, const log4c_appender_type_t *a_type)
 
LOG4C_API void * log4c_appender_set_udata (log4c_appender_t *a_appender, void *a_udata)
 
const LOG4C_API log4c_layout_tlog4c_appender_set_layout (log4c_appender_t *a_appender, const log4c_layout_t *a_layout)
 
LOG4C_API int log4c_appender_open (log4c_appender_t *a_appender)
 
LOG4C_API int log4c_appender_append (log4c_appender_t *a_appender, log4c_logging_event_t *a_event)
 
LOG4C_API int log4c_appender_close (log4c_appender_t *a_appender)
 
LOG4C_API void log4c_appender_print (const log4c_appender_t *a_appender, FILE *a_stream)
 
LOG4C_API void log4c_appender_types_print (FILE *fp)
 

Detailed Description

Implement this interface for your own strategies for printing log statements.

Todo:
the appender interface needs a better configuration system depending on the layout type. The udata field is a just a trick.

Macro Definition Documentation

◆ log4c_appender_type_define

#define log4c_appender_type_define (   a_type)

Helper macro to define static appender types.

Parameters
a_typethe log4c_appender_type_t object to define
Warning
needs GCC support: otherwise this macro does nothing
Deprecated:
This macro, and the static initialialization of appenders in general, is deprecated. Use rather the log4c_appender_type_set() function to initialize your appenders before calling log4c_init()

Typedef Documentation

◆ log4c_appender_t

typedef struct __log4c_appender log4c_appender_t

log4c appender class

◆ log4c_appender_type_t

log4c appender type class

Attributes description:

  • name appender type name
  • open
  • append
  • close

Function Documentation

◆ log4c_appender_append()

LOG4C_API int log4c_appender_append ( log4c_appender_t this,
log4c_logging_event_t a_event 
)

log in appender specific way.

Parameters
a_appenderthe log4c_appender object
a_eventthe log4c_logging_event_t object to log.
Bug:
is this the right place to open an appender ?

References log4c_appender_open(), and log4c_layout_format().

◆ log4c_appender_close()

LOG4C_API int log4c_appender_close ( log4c_appender_t a_appender)

closes the appender

Parameters
a_appenderthe log4c_appender_t object
Returns
zero if successful, -1 otherwise

◆ log4c_appender_delete()

LOG4C_API void log4c_appender_delete ( log4c_appender_t a_appender)

Destructor for log4c_appender_t.

References log4c_appender_close().

◆ log4c_appender_get()

LOG4C_API log4c_appender_t* log4c_appender_get ( const char *  a_name)

Get a pointer to an existing appender.

Parameters
a_namethe name of the appender to return.
Returns
a pointer to an existing appender, or NULL if no appender with the specfied name exists.

References log4c_appender_delete(), log4c_appender_new(), and log4c_appender_print().

◆ log4c_appender_get_layout()

const LOG4C_API log4c_layout_t* log4c_appender_get_layout ( const log4c_appender_t a_appender)
Parameters
a_appenderthe log4c_appender_t object
Returns
the appender layout

◆ log4c_appender_get_name()

const LOG4C_API char* log4c_appender_get_name ( const log4c_appender_t a_appender)
Parameters
a_appenderthe log4c_appender_t object
Returns
the appender name

◆ log4c_appender_get_type()

const LOG4C_API log4c_appender_type_t* log4c_appender_get_type ( const log4c_appender_t a_appender)
Parameters
a_appenderthe log4c_appender_t object
Returns
the appender operations

◆ log4c_appender_get_udata()

LOG4C_API void* log4c_appender_get_udata ( const log4c_appender_t a_appender)
Parameters
a_appenderthe log4c_appender_t object
Returns
the appender user data

◆ log4c_appender_new()

LOG4C_API log4c_appender_t* log4c_appender_new ( const char *  a_name)

Constructor for log4c_appender_t.

References log4c_appender_type_stream, and log4c_layout_get().

◆ log4c_appender_open()

LOG4C_API int log4c_appender_open ( log4c_appender_t a_appender)

opens the appender.

Parameters
a_appenderthe log4c_appender_t object

◆ log4c_appender_print()

LOG4C_API void log4c_appender_print ( const log4c_appender_t a_appender,
FILE *  a_stream 
)

prints the appender on a stream

Parameters
a_appenderthe log4c_appender_t object
a_streamthe stream

References log4c_layout_get_name().

◆ log4c_appender_set_layout()

const LOG4C_API log4c_layout_t* log4c_appender_set_layout ( log4c_appender_t a_appender,
const log4c_layout_t a_layout 
)

sets the appender layout

Parameters
a_appenderthe log4c_appender_t object
a_layoutthe new appender layout
Returns
the previous appender layout

◆ log4c_appender_set_type()

const LOG4C_API log4c_appender_type_t* log4c_appender_set_type ( log4c_appender_t a_appender,
const log4c_appender_type_t a_type 
)

sets the appender type

Parameters
a_appenderthe log4c_appender_t object
a_typethe new appender type
Returns
the previous appender type

◆ log4c_appender_set_udata()

LOG4C_API void* log4c_appender_set_udata ( log4c_appender_t a_appender,
void *  a_udata 
)

sets the appender user data

Parameters
a_appenderthe log4c_appender_t object
a_udatathe new appender user data
Returns
the previous appender user data

◆ log4c_appender_type_get()

const LOG4C_API log4c_appender_type_t* log4c_appender_type_get ( const char *  a_name)

Get a pointer to an existing appender type.

Parameters
a_namethe name of the appender type to return.
Returns
a pointer to an existing appender type, or NULL if no appender type with the specified name exists.

◆ log4c_appender_type_set()

const LOG4C_API log4c_appender_type_t* log4c_appender_type_set ( const log4c_appender_type_t a_type)

Use this function to register an appender type with log4c. Once this is done you may refer to this type by name both programmatically and in the log4c configuration file.

Parameters
a_typea pointer to the new appender type to set.
Returns
a pointer to the previous appender type of same name.

Example code fragment:

const log4c_appender_type_t log4c_appender_type_s13_file = {
"s13_file",
s13_file_open,
s13_file_append,
s13_file_close,
};
log4c_appender_type_set(&log4c_appender_type_s13_file);

◆ log4c_appender_types_print()

LOG4C_API void log4c_appender_types_print ( FILE *  fp)

prints all the current registered appender types on a stream

Parameters
fpthe stream
log4c_appender_type
log4c appender type class
Definition: appender.h:46
log4c_appender_type_set
const LOG4C_API log4c_appender_type_t * log4c_appender_type_set(const log4c_appender_type_t *a_type)
Definition: appender.c:79