4 char* __osrfLogAppName = NULL;
5 char* __osrfLogDir = NULL;
6 int __osrfLogLevel = 1;
8 int osrfLogInit(char* appname) {
10 if( !appname ) return -1;
11 info_handler("Initing application log for app %s", appname );
13 char* dir = osrf_settings_host_value("/dirs/log");
14 if(!dir) return warning_handler("No '/dirs/log' setting in host config");
16 char* level = osrfConfigGetValue(NULL, "/loglevel");
17 if(level) { __osrfLogLevel = atoi(level); free(level); }
19 __osrfLogAppName = strdup(appname);
20 __osrfLogDir = strdup(dir);
25 void osrfLog( enum OSRF_LOG_LEVEL level, char* msg, ... ) {
27 if( !(__osrfLogDir && __osrfLogAppName) ) return;
28 if( level > __osrfLogLevel ) return;
30 time_t t = time(NULL);
31 struct tm* tms = localtime(&t);
35 strftime( datebuf, 23, "%d%m%Y", tms );
39 strftime( timebuf, 23, "%Y:%m:%d %H:%M:%S", tms );
43 double d = get_timestamp_millis();
45 sprintf(millis, "%.6f", d);
48 char* filename = va_list_to_string(
49 "%s/%s.%s.log", __osrfLogDir, __osrfLogAppName, datebuf);
51 FILE* file = fopen(filename, "a");
55 warning_handler("Unable to open application log file %s\n", filename);
59 VA_LIST_TO_STRING(msg);
60 fprintf(file, "[%s.%s %d %d] %s\n", timebuf, millis + 2, getpid(), level, VA_BUF );