/* Defines for Loging ** heres the standard way of login looks like. ** Format: <HOST> - - <DATE> <METHOD> <URI> <RESULT> <CONTENT_LENTGH> */ #define LOG_STANDARD 1 /** Format: <HOST> - - <DATE> <METHOD>*/ #define LOG_HDM 2 /** Format: <HOST> - - <DATE> <URI>*/ #define LOG_HDU 3 /** Format: <HOST> - - <DATE> <METHOD> <URI>*/ #define LOG_HDMU 4 /** Format: <HOST> - - <DATE> <METHOD> <URI> <RESULT>*/ #define LOG_HDMUR 5 /** Format: <URI>*/ #define LOG_URI 6
/* Add entry to the log file ** ------------------------- ** Format: <HOST> - - <DATE> <METHOD> <URI> <RESULT> <CONTENT_LENTGH> ** which is almost equivalent to Common Logformat. Permissions on UNIX ** are modified by umask. ** ** Returns YES if OK, NO on error ** ** BUG: No result code is produced :-( Should be taken from HTError.c */ PUBLIC BOOL HTLog_add (HTRequest * request, int status, int method) { if (HTLogFile) { time_t now = time(NULL); HTParentAnchor *anchor = HTRequest_anchor(request); char * uri = HTAnchor_address((HTAnchor *) anchor); if (WWWTRACE) TTYPrint(TDEST, "Log......... Writing log\n"); switch(method){ case LOG_STANDARD: fprintf(HTLogFile, "localhost - - [%s] %s %s %d %ld\n", HTDateTimeStr(&now, HTloglocal), HTMethod_name(HTRequest_method(request)), uri, status, HTAnchor_length(anchor)); FREE(uri); break; case LOG_HDM: fprintf(HTLogFile, "localhost - - [%s] %s\n", HTDateTimeStr(&now, HTloglocal), HTMethod_name(HTRequest_method(request)); break; case LOG_HDU: fprintf(HTLogFile, "localhost - - [%s] %s\n", HTDateTimeStr(&now, HTloglocal), uri); FREE(uri); break; case LOG_HDMU: fprintf(HTLogFile, "localhost - - [%s] %s %s\n", HTDateTimeStr(&now, HTloglocal), HTMethod_name(HTRequest_method(request)), uri); FREE(uri); break; case LOG_HDMUR: fprintf(HTLogFile, "localhost - - [%s] %s %s %d\n", HTDateTimeStr(&now, HTloglocal), HTMethod_name(HTRequest_method(request)), uri, status); FREE(uri); break; case LOG_URI: fprintf(HTLogFile, "%s\n",uri); FREE(uri); break; default: fprintf(HTLogFile, "[%s] - - Loging Method Not defined\n", HTDateTimeStr(&now, HTloglocal)); break; } return (fflush(HTLogFile)!=EOF); /* Actually update it on disk */ } return NO; }