summaryrefslogtreecommitdiff
path: root/logd.cpp
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:42 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:42 +0200
commit98eac951f8087b213f5850bd126dcb279db360a8 (patch)
treec121f5c4df1aab847defa539990c1315bd5ba4a8 /logd.cpp
parent0537da9d1e0f593130fc3967befb71e673b016bc (diff)
tagging ychat-0.6ychat-0.6
Diffstat (limited to 'logd.cpp')
-rw-r--r--logd.cpp82
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