aboutsummaryrefslogtreecommitdiff
path: root/3rdparty/log/log.h
blob: 046c3450a02484e40f47696b6571d32fa539e0a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* ******************************************** */
/* File Name: log.h                             */
/* Author: (C) 2007-2009 - Juan Jos� Ponteprino */
/* Description: Loggin API Headers              */
/* License: This code is licenced as LGPL       */
/* ******************************************** */

#ifndef _LOG_H
#define _LOG_H

#include <time.h>

/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* Core                                                 */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */

#define LOG_INIT_INTERNAL_BUFFER_SIZE   16384

enum {
    LOG_PRIO_EMERGENCY  = 0      ,  /* el sistema est� inutilizable */
    LOG_PRIO_ALERT               ,  /* debe tomarse una acci�n correctora inmediatamente */
    LOG_PRIO_CRITICAL            ,  /* condiciones cr�ticas */
    LOG_PRIO_ERROR               ,  /* condiciones de error */
    LOG_PRIO_WARNNING            ,  /* condiciones de advertencia */
    LOG_PRIO_NOTICE              ,  /* condici�n normal, pero significativa */
    LOG_PRIO_INFO                ,  /* mensaje informativo */
    LOG_PRIO_DEBUG               ,  /* mensaje del nivel de depuraci�n */
    LOG_PRIO_NODEF               ,  /* No definido */
    LOG_PRIO_MAX = LOG_PRIO_NODEF   /* valor maximo permitido ( - 1 ) */
};

typedef struct
{
    void * privData; /* Internal Use */

    char * internalBuffer;

    void * ( * log_open )( char * name, int flags );
    void ( * log_close )( void * privData );
    void ( * log_write )( void * privData, int priority, char * message );
    void ( * log_control )( void * privData, long kid, char * args );
} log_t;

/* ---------------------------------------------------- */
/* Control format                                       */
/* --------------                                       */
/* 0xBBUUUUUU                                           */
/* BB = Internal backend id ( 0xff - core control )     */
/* UUUUUU = User data                                   */
/* ---------------------------------------------------- */

#define LOG_SYSTEM_CTRL         0xFF000000

#define LOG_LEVEL               0xFF000001

/* ---------------------------------------------------- */

int log_open( log_t * backend, char * name, int flags );
void log_close( log_t * backend );
void log_write( log_t * backend, int priority, char * format, ... );
void log_control( log_t * backend, long kid, char * args );
FILE * log_get_handle( log_t * backend );

/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* Default backend                                      */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */
/* ---------------------------------------------------- */

/* controls keyword id for file backend */

#define LOG_FILE_ROLL_NOW       0x00000001
#define LOG_FILE_GET_FD         0x00000002

/* flags for file backend */

#define LOG_FILE_ROLL_SIZE_MASK 0x000007FF /* Max is 2047MB, 0 is disable size roll */
#define LOG_FILE_ROLL_DAY       0x00001000
#define LOG_FILE_DONT_FLUSH     0x00002000

#define LOG_FILE_DISPLAY_FNAME  0x00010000

/* file backend internal struct */

typedef struct
{
    char * fullpathname;
    char * filename;
    FILE * handle;
    int flags;
    struct tm lastTime;
} log_be_file_t;

/* file backend functions */

log_t * log_file_be_create();
void * log_file_open( char * name, int flags );
void log_file_close( void * privData );
void log_file_write( void * privData, int priority, char * message );
void log_file_control( void * privData, long kid, char * args );

/* ---------------------------------------------------- */

#endif