]> git.evergreen-ils.org Git - working/Evergreen.git/blob - OpenSRF/src/libstack/osrf_log.c
added the md5 server (opensrf.version)
[working/Evergreen.git] / OpenSRF / src / libstack / osrf_log.c
1 #include "osrf_log.h"
2 #include <time.h>
3
4 char* __osrfLogAppName = NULL;
5 char* __osrfLogDir = NULL;
6 int __osrfLogLevel = 1;
7
8 int osrfLogInit(char* appname) {
9
10         if( !appname ) return -1;
11         info_handler("Initing application log for app %s", appname );
12
13         char* dir = osrf_settings_host_value("/dirs/log");
14         if(!dir) return warning_handler("No '/dirs/log' setting in host config");
15
16         char* level = osrfConfigGetValue(NULL, "/loglevel");
17         if(level) { __osrfLogLevel = atoi(level); free(level); }
18
19         __osrfLogAppName = strdup(appname);
20         __osrfLogDir = strdup(dir);
21         return 0;
22 }
23
24
25 void osrfLog( enum OSRF_LOG_LEVEL level, char* msg, ... ) {
26
27         if( !(__osrfLogDir && __osrfLogAppName) ) return;
28         if( level > __osrfLogLevel ) return;
29
30         time_t t = time(NULL);
31         struct tm* tms = localtime(&t);
32
33         char datebuf[24];
34         bzero(datebuf, 24);
35         strftime( datebuf, 23, "%d%m%Y", tms );
36
37         char timebuf[24];
38         bzero(timebuf, 24);
39         strftime( timebuf, 23, "%Y:%m:%d %H:%M:%S", tms );
40
41         char millis[12];
42         bzero(millis, 12);
43         double d = get_timestamp_millis();
44         d = d - (int) d;
45         sprintf(millis, "%.6f", d);
46
47
48         char* filename = va_list_to_string( 
49                         "%s/%s.%s.log", __osrfLogDir, __osrfLogAppName, datebuf);
50
51         FILE* file = fopen(filename, "a");
52         free(filename);
53
54         if(!file) {
55                 warning_handler("Unable to open application log file %s\n", filename);
56                 return;
57         }
58
59         VA_LIST_TO_STRING(msg);
60         fprintf(file, "[%s.%s %d %d] %s\n", timebuf, millis + 2, getpid(), level, VA_BUF );
61         fclose(file);
62 }
63
64