appender_type_stream2.h File Reference

Log4c stream2 appender interface. More...

`#include <log4c/defs.h>`
`#include <log4c/appender.h>`

Go to the source code of this file.

## Functions

void | log4c_stream2_set_fp (log4c_appender_t *a_this, FILE *fp)
FILE * | log4c_stream2_get_fp (log4c_appender_t *a_this)
void | log4c_stream2_set_flags (log4c_appender_t *a_this, int flags)
int | log4c_stream2_get_flags (log4c_appender_t *a_this)

## Variables

__LOG4C_BEGIN_DECLS const log4c_appender_type_t | log4c_appender_type_stream2

## Detailed Description

Log4c stream2 appender interface.

The stream2 appender uses a file handle `FILE*` for logging. It can be used with `stdout`, `stderr` or a normal file. It is pretty primitive as it does not do file rotation, or have a maximum configurable file size etc. It improves on the stream appender in a few ways that make it a better starting point for new stream based appenders.

It enhances the stream appender by allowing the default file pointer to be used in buffered or unbuffered mode. Also when you set the file pointer stream2 will not attempt to close it on exit which avoids it fighting with the owner of the file pointer. stream2 is configured via setter functions–the udata is not exposed directly. This means that new options (eg. configure the open mode ) could be added to stream2 while maintaining backward compatability.

The appender can be used with default values, for example as follows:

log4c_appender_t* myappender;
myappender = log4c_appender_get("/var/logs/mylog.log");
log4c_appender_set_type(myappender,log4c_appender_type_get("stream2"));
log4c_appender_t
struct __log4c_appender log4c_appender_t
Definition appender.h:34

In this case the appender will be configured automatically with default values:

- the filename is the same as the name of the appender, `"/var/logs/mymlog.log"`
- the file is opened in "w+" mode
- the default system buffer is used (cf; `setbuf()` ) in buffered mode

The stream2 appender can be configured by passing it a file pointer to use. In this case you manage the file pointer yourself–open, option setting, closing. If you set the file pointer log4c will not close the file on exiting–you must do this:

log4c_appender_t* myappender;
FILE * fp = fopen("myfile.log", "w");
myappender = log4c_appender_get("myappender");
log4c_appender_set_type(myappender, log4c_appender_type_get("stream2"));
log4c_stream2_set_fp(stream2_appender,myfp);

The default file pointer can be configured to use unbuffered mode. Buffered mode is typically 25%-50% faster than unbuffered mode but unbuffered mode is useful if your preference is for a more synchronized log file:

log4c_appender_t* myappender;
myappender = log4c_appender_get("/var/logs/mylog.log");
log4c_appender_set_type(myappender,log4c_appender_type_get("stream2"));
log4c_stream2_set_flags(myappender, LOG4C_STREAM2_UNBUFFERED);

## Function Documentation

## log4c_stream2_get_flags()

int log4c_stream2_get_flags | ( | log4c_appender_t * | a_this | ) |

Get the flags for this appender.

Parameters

  this | a pointer to the appender

Returns
  the flags for this appender. returns -1 if there was a problem.

## log4c_stream2_get_fp()

FILE * log4c_stream2_get_fp | ( | log4c_appender_t * | a_this | ) |

Get the file pointer for this appender.

Parameters

  this | a pointer to the appender

Returns
  the file pointer for this appender. If there's a problem returns NULL.

## log4c_stream2_set_flags()

void log4c_stream2_set_flags | ( | log4c_appender_t * | a_this,
|  | int | flags
| ) |  |

Set the flags for this appender.

Parameters

  this | a pointer to the appender
  flags | ar teh flags to set. These will overwrite the existing flags. Currently supported flags: LOG4C_STREAM2_UNBUFFERED

## log4c_stream2_set_fp()

void log4c_stream2_set_fp | ( | log4c_appender_t * | a_this,
|  | FILE * | fp
| ) |  |

Set the file pointer for this appender.

Parameters

  this | a pointer to the appender
  fp | the file pointer this appender will use. The caller is responsible for managing the file pointer (open, option setting, closing).

## Variable Documentation

## log4c_appender_type_stream2

__LOG4C_BEGIN_DECLS const log4c_appender_type_t log4c_appender_type_stream2

Stream2 appender type definition.

This should be used as a parameter to the log4c_appender_set_type() routine to set the type of the appender.