#include <stdarg.h> // va-args
#include <stdlib.h> // malloc/free
#include <string.h> // strdup
+#include <time.h>
#include "pnd_logger.h"
-char *log_pretext = NULL;
-unsigned char log_filterlevel = 0;
-unsigned char log_flushafter = 0;
+static char *log_pretext = NULL;
+static unsigned char log_filterlevel = 0;
+static unsigned char log_flushafter = 0;
+static time_t log_first = 0;
typedef enum {
pndl_nil = 0,
case pndl_stream:
// pretext
if ( log_pretext ) {
- fprintf ( log_targets [ i ].stream, "%s\t", log_pretext );
+ fprintf ( log_targets [ i ].stream, "%s ", log_pretext );
}
// log level
- fprintf ( log_targets [ i ].stream, "%u\t", level );
+ fprintf ( log_targets [ i ].stream, "%u %u\t", level, (unsigned int) (time ( NULL ) - log_first) );
// message
if ( message ) {
fprintf ( log_targets [ i ].stream, "%s", message );
unsigned char pnd_log ( unsigned char level, char *fmt, ... ) {
+ if ( log_first == 0 ) {
+ log_first = time ( NULL );
+ }
+
if ( level == PND_LOG_FORCE ) {
// always proceed
} else if ( level < log_filterlevel ) {