diff -r 0125e4089f88 -r 86a23238d8a1 ucx/logging.h --- a/ucx/logging.h Wed Feb 06 14:35:15 2013 +0100 +++ b/ucx/logging.h Fri Feb 08 10:37:24 2013 +0100 @@ -22,6 +22,7 @@ typedef struct { FILE *stream; + size_t(*writer)(const void*, size_t, size_t, FILE*); unsigned int level; unsigned int mask; UcxMap* levels; @@ -30,16 +31,30 @@ UcxLogger *ucx_logger_new(FILE *stream, unsigned int level, unsigned int mask); void ucx_logger_free(UcxLogger* logger); -void ucx_logger_log(UcxLogger *logger, unsigned int level, - const sstr_t message, const char* file, const unsigned int line); -#define ucx_logger_error(l,m) \ - ucx_logger_log(l, UCX_LOGGER_ERROR, m, __FILE__, __LINE__) -#define ucx_logger_info(l,m) \ - ucx_logger_log(l, UCX_LOGGER_INFO, m, __FILE__, __LINE__) -#define ucx_logger_warn(l,m) \ - ucx_logger_log(l, UCX_LOGGER_WARN, m, __FILE__, __LINE__) -#define ucx_logger_trace(l,m) \ - ucx_logger_log(l, UCX_LOGGER_TRACE, m, __FILE__, __LINE__) +/** + * Sets the output stream and writer for this logger. + * The parameters stream and writer may be NULL, if they shall remain unchanged + * in the logger. + * l + * @param logger The logger + * @param stream The stream the logger shall log to + * @param writer A pointer to the write function + */ +void ucx_logger_setoutput(UcxLogger *logger, FILE *stream, + size_t(*writer)(const void*,size_t,size_t,FILE*)); + +void ucx_logger_logf(UcxLogger *logger, unsigned int level, const char* file, + const unsigned int line, const char* format, ...); +#define ucx_logger_log(logger, level, format...) \ + ucx_logger_logf(logger, level, __FILE__, __LINE__, format) +#define ucx_logger_error(logger,format...) \ + ucx_logger_log(logger, UCX_LOGGER_ERROR, format) +#define ucx_logger_info(logger,format...) \ + ucx_logger_log(logger, UCX_LOGGER_INFO, format) +#define ucx_logger_warn(logger,format...) \ + ucx_logger_log(logger, UCX_LOGGER_WARN, format) +#define ucx_logger_trace(logger,format...) \ + ucx_logger_log(logger, UCX_LOGGER_TRACE, format) #ifdef __cplusplus }