f2f880e4d694fb8ede07fb244b331e57275a2421
[mediaserv.git] / Server / HTTPLogger.cc
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
5 // TODO: error logging
6
7 // Definition of non-inline non-template functions
8
9 #include "HTTPLogger.hh"
10 //#include "HTTPLogger.ih"
11
12 // Custom includes
13 #include "Socket/INetAddressing.hh"
14 #include "Socket/CommunicationPolicy.hh"
15
16 //#include "HTTPLogger.mpp"
17 #define prefix_
18 ///////////////////////////////cc.p////////////////////////////////////////
19
20 namespace {
21
22     std::string currentDateTimeString()
23     {
24         time_t t;
25         time(&t);
26         char buffer[32];
27         strftime(buffer,32,"%d/%b/%Y:%H:%M:%S %z",localtime(&t));
28         buffer[31] = 0;
29         return std::string(buffer);
30     }
31
32 }
33
34 prefix_ g0dil::mediaserv::HTTPLogger::HTTPLogger(std::string logfile)
35     : logFile_(logfile.c_str(),std::ofstream::app)
36 {
37     if (!logFile_)
38         throw InvalidLogFileException();
39     logFile_ << "(start)" << " - - [" << currentDateTimeString() << "] mediaserv started" 
40              << std::endl;
41 }
42
43 prefix_ g0dil::mediaserv::HTTPLogger::~HTTPLogger()
44 {
45     logFile_ << "(shutdown)" << " - - [" << currentDateTimeString() << "] mediaserv terminated" 
46              << std::endl;
47 }
48
49 prefix_ void g0dil::mediaserv::HTTPLogger::invalidRequest(std::string message)
50 {
51     logFile_ << "(unknown client)" << " - - [" << currentDateTimeString() << "] " 
52              << "invalid request: " << message << std::endl;
53 }
54
55 prefix_ void g0dil::mediaserv::HTTPLogger::invalidRequest(HTTPRequest const & request,
56                                                           std::string message)
57 {
58     logFile_ << request.host() << " - - [" << currentDateTimeString() << "] ";
59     if (!request.method().empty())
60         logFile_ << "\"" << request.method() << " " << request.url() << " " << request.version() << "\" ";
61     logFile_ << "invalid request: " << message << std::endl;
62 }
63
64 prefix_ void g0dil::mediaserv::HTTPLogger::failedRequest(std::string message)
65 {
66     logFile_ << "(unknown client)" << " - - [" << currentDateTimeString() << "] " 
67              << "failed request: " << message << std::endl;
68 }
69
70 prefix_ void g0dil::mediaserv::HTTPLogger::failedRequest(HTTPRequest const & request,
71                                                          std::string message)
72 {
73     logFile_ << request.host() << " - - [" << currentDateTimeString() << "] ";
74     if (!request.method().empty())
75         logFile_ << "\"" << request.method() << " " << request.url() << " " << request.version() << "\" ";
76     logFile_ << "invalid request: " << message << std::endl;
77 }
78
79 prefix_ void g0dil::mediaserv::HTTPLogger::request(HTTPRequest const & request, 
80                                                    unsigned bytes)
81 {
82     logFile_ << request.host() << " - - [" << currentDateTimeString() << "] "
83              << "\"" << request.method() << " " << request.url() << " " << request.version()
84              << "\" 200 " << bytes << " \"\" \"\"" << std::endl;
85 }
86
87 ///////////////////////////////cc.e////////////////////////////////////////
88 #undef prefix_
89 //#include "HTTPLogger.mpp"
90
91 \f
92 // Local Variables:
93 // mode: c++
94 // End: