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

## Functions

const log4c_appender_type_t * | log4c_appender_type_get (const char *a_name)
const log4c_appender_type_t * | log4c_appender_type_set (const log4c_appender_type_t *a_type)
log4c_appender_t * | log4c_appender_get (const char *a_name)
log4c_appender_t * | log4c_appender_new (const char *a_name)
void | log4c_appender_delete (log4c_appender_t *a_appender)
const char * | log4c_appender_get_name (const log4c_appender_t *a_appender)
const log4c_appender_type_t * | log4c_appender_get_type (const log4c_appender_t *a_appender)
const log4c_layout_t * | log4c_appender_get_layout (const log4c_appender_t *a_appender)
void * | log4c_appender_get_udata (const log4c_appender_t *a_appender)
const log4c_appender_type_t * | log4c_appender_set_type (log4c_appender_t *a_appender, const log4c_appender_type_t *a_type)
void * | log4c_appender_set_udata (log4c_appender_t *a_appender, void *a_udata)
const log4c_layout_t * | log4c_appender_set_layout (log4c_appender_t *a_appender, const log4c_layout_t *a_layout)
int | log4c_appender_open (log4c_appender_t *a_appender)
int | log4c_appender_append (log4c_appender_t *a_appender, log4c_logging_event_t *a_event)
int | log4c_appender_close (log4c_appender_t *a_appender)
void | log4c_appender_print (const log4c_appender_t *a_appender, FILE *a_stream)
void | log4c_appender_types_free (void)
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_type | the 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

typedef struct log4c_appender_type log4c_appender_type_t

log4c appender type class

Attributes description:

- `name` appender type name
- `open`
- `append`
- `close`

## Function Documentation

## log4c_appender_append()

int log4c_appender_append | ( | log4c_appender_t * | this,
|  | log4c_logging_event_t * | a_event )

log in appender specific way.

Parameters

  a_appender | the log4c_appender object
  a_event | the log4c_logging_event_t object to log.

Bug
  is this the right place to open an appender ?

## log4c_appender_close()

int log4c_appender_close | ( | log4c_appender_t * | a_appender | ) |

closes the appender

Parameters

  a_appender | the log4c_appender_t object

Returns
  zero if successful, -1 otherwise

## log4c_appender_delete()

void log4c_appender_delete | ( | log4c_appender_t * | a_appender | ) |

Destructor for log4c_appender_t.

## log4c_appender_get()

log4c_appender_t * log4c_appender_get | ( | const char * | a_name | ) |

Get a pointer to an existing appender.

Parameters

  a_name | the name of the appender to return.

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

## log4c_appender_get_layout()

const log4c_layout_t * log4c_appender_get_layout | ( | const log4c_appender_t * | a_appender | ) |

Parameters

  a_appender | the log4c_appender_t object

Returns
  the appender layout

## log4c_appender_get_name()

const char * log4c_appender_get_name | ( | const log4c_appender_t * | a_appender | ) |

Parameters

  a_appender | the log4c_appender_t object

Returns
  the appender name

## log4c_appender_get_type()

const log4c_appender_type_t * log4c_appender_get_type | ( | const log4c_appender_t * | a_appender | ) |

Parameters

  a_appender | the log4c_appender_t object

Returns
  the appender operations

## log4c_appender_get_udata()

void * log4c_appender_get_udata | ( | const log4c_appender_t * | a_appender | ) |

Parameters

  a_appender | the log4c_appender_t object

Returns
  the appender user data

## log4c_appender_new()

log4c_appender_t * log4c_appender_new | ( | const char * | a_name | ) |

Constructor for log4c_appender_t.

## log4c_appender_open()

int log4c_appender_open | ( | log4c_appender_t * | a_appender | ) |

opens the appender.

Parameters

  a_appender | the log4c_appender_t object

## log4c_appender_print()

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

prints the appender on a stream

Parameters

  a_appender | the log4c_appender_t object
  a_stream | the stream

## log4c_appender_set_layout()

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

sets the appender layout

Parameters

  a_appender | the log4c_appender_t object
  a_layout | the new appender layout

Returns
  the previous appender layout

## log4c_appender_set_type()

const 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_appender | the log4c_appender_t object
  a_type | the new appender type

Returns
  the previous appender type

## log4c_appender_set_udata()

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

sets the appender user data

Parameters

  a_appender | the log4c_appender_t object
  a_udata | the new appender user data

Returns
  the previous appender user data

## log4c_appender_type_get()

const log4c_appender_type_t * log4c_appender_type_get | ( | const char * | a_name | ) |

Get a pointer to an existing appender type.

Parameters

  a_name | the 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_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_type | a 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_type_t
struct log4c_appender_type log4c_appender_type_t
log4c appender type class

## log4c_appender_types_free()

void log4c_appender_types_free | ( | void |  | ) |

free all appender types

## log4c_appender_types_print()

void log4c_appender_types_print | ( | FILE * | fp | ) |

prints all the current registered appender types on a stream

Parameters

  fp | the stream