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