diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:42 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:42 +0200 |
| commit | 98eac951f8087b213f5850bd126dcb279db360a8 (patch) | |
| tree | c121f5c4df1aab847defa539990c1315bd5ba4a8 /logd.cpp | |
| parent | 0537da9d1e0f593130fc3967befb71e673b016bc (diff) | |
tagging ychat-0.6ychat-0.6
Diffstat (limited to 'logd.cpp')
| -rw-r--r-- | logd.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/logd.cpp b/logd.cpp new file mode 100644 index 0000000..5a7fa82 --- /dev/null +++ b/logd.cpp @@ -0,0 +1,82 @@ +#ifndef LOGD_CXX +#define LOGD_CXX + +#include "s_ncur.h" +#include "glob.h" +#include "logd.h" + +logd::logd( string filename ) +{ + if(filename.empty()) + { +#ifdef NCURSES + s_ncur::get + ().print( LOGERR2 ); +#endif +#ifdef SERVMSG + cerr << LOGERR2 << endl; +#endif + exit(1); + } + + s_logfile=filename; + + i_lines=s_tool::string2int( s_conf::get + ().get_val("LOG_LINES")); + +} +void logd::flush() +{ + s_output.open(s_logfile.c_str(), ios::app); + + if(s_output==NULL) + { +#ifdef NCURSES + string s_tmp( LOGERR1 ); + s_tmp.append( s_logfile ); + s_ncur::get + ().print( s_tmp.c_str() ); +#endif +#ifdef SERVMSG + cerr << LOGERR1 << s_logfile << endl; +#endif + exit(1); + } + + + while(!s_queue.empty()) + { + string s_l=s_queue.front(); + s_queue.pop(); + s_output.write(s_l.c_str(), s_l.size()); + + } + s_output.close(); +} +void logd::log( map_string request ) +{ + struct tm *t_m; + time_t t_cur=time(NULL); + t_m=gmtime(&t_cur); + + char buffer[100]; + strftime(buffer, 100, "[%d/%b/%Y:%H:%M:%S %z]", t_m); + string s_time=buffer; + string s_logstr = request["REMOTE_ADDR"] + " - - "+s_time+" \"" + request["QUERY_STRING"]+"\" 200 0 \""+request["request"]+"\" \""+request["User-Agent"]+"\"\n"; + + s_queue.push(s_logstr); + + if(s_queue.size()>=i_lines) + flush(); +} + +logd::~logd() +{ + flush(); +} + + + + + +#endif |
