1 /*
2 ** Logging framework.
3 **
4 ** This program is distributed under the GNU General Public License, version 2.
5 ** A copy of this license is included with this source.
6 */
7 
8 #ifndef __LOG_H__
9 #define __LOG_H__
10 
11 #include <stdio.h>
12 
13 #define LOG_EINSANE -1
14 #define LOG_ENOMORELOGS -2
15 #define LOG_ECANTOPEN -3
16 #define LOG_ENOTOPEN -4
17 #define LOG_ENOTIMPL -5
18 
19 #ifdef _WIN32
20 #define IO_BUFFER_TYPE _IONBF
21 #else
22 #define IO_BUFFER_TYPE _IOLBF
23 #endif
24 
25 typedef int (*mx_create_func)(void**m, int create);
26 typedef int (*mx_lock_func)(void**m, int create);
27 typedef void (*log_commit_callback)(int id);
28 
29 void log_initialize_lib (mx_create_func mxc, mx_lock_func mxl);
30 void log_initialize(void);
31 int log_open_file(FILE *file);
32 int log_open(const char *filename);
33 int log_open_with_buffer(const char *filename, int size);
34 void log_set_level(int log_id, unsigned level);
35 void log_set_trigger(int id, unsigned long trigger);
36 void log_set_reopen_after (int id, unsigned int trigger);
37 int  log_set_filename(int id, const char *filename);
38 void log_set_lines_kept (int log_id, unsigned int count);
39 int  log_contents (int log_id, char **_contents, unsigned int *_len);
40 int log_set_archive_timestamp(int id, int value);
41 void log_flush(int log_id);
42 void log_reopen(int log_id);
43 void log_close(int log_id);
44 void log_shutdown(void);
45 
46 void log_write(int log_id, unsigned priority, const char *cat, const char *func,
47         const char *fmt, ...)  __attribute__ ((format (gnu_printf, 5, 6)));
48 void log_write_direct(int log_id, const char *fmt, ...) __attribute__ ((format (gnu_printf, 2, 3)));
49 void log_set_commit_callback (log_commit_callback f);
50 void log_commit_entries ();
51 
52 #endif  /* __LOG_H__ */
53