From 55d194edb724a081937420e2cb6f1d7ac6310108 Mon Sep 17 00:00:00 2001 From: driAn Date: Tue, 13 May 2008 21:24:12 +0000 Subject: [PATCH] log fixes git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1954 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/log.cpp | 66 ++++++++++++++++++++++++++++++------------- source/src/menus.cpp | 2 -- source/src/protos.h | 4 ++- source/src/server.cpp | 10 +++---- 4 files changed, 55 insertions(+), 27 deletions(-) diff --git a/source/src/log.cpp b/source/src/log.cpp index 1f2fcd1d..74bc7da2 100644 --- a/source/src/log.cpp +++ b/source/src/log.cpp @@ -6,36 +6,49 @@ struct filelog : log { FILE *file; + string filepath; filelog(const char *filepath) { - file = fopen(filepath, "w"); + s_strcpy(this->filepath, filepath); } ~filelog() { - if(file) fclose(file); + close(); } virtual void writeline(int level, const char *msg, ...) { if(!enabled) return; - s_sprintfdv(sf, msg); - s_sprintfd(out)("%s\n", sf); - filtertext(out, out); + filtertext(sf, sf); if(console) { - puts(out); + puts(sf); fflush(stdout); } if(file) { - fwrite(out, sizeof(char), strlen(out), file); + fprintf(file, "%s\n", sf); fflush(file); } } + + virtual void open() + { + if(file) return; + file = fopen(filepath, "w"); + if(file) enabled = true; + } + + virtual void close() + { + if(!file) return; + fclose(file); + enabled = false; + } }; @@ -51,26 +64,41 @@ struct posixsyslog : log posixsyslog(int facility, const char *ident) { - this->facility = facility; - s_strcpy(this->ident, ident); - - openlog(this->ident, LOG_NDELAY, this->facility); + this->facility = facility; + s_strcpy(this->ident, ident); } ~posixsyslog() { - closelog(); + close(); } virtual void writeline(int level, const char *msg, ...) { - if(!enabled) return; - s_sprintfdv(sf, msg); - s_sprintfd(out)("%s\n", sf); - filtertext(out, out); - int l = (level==log::info ? LOG_INFO : ( level==log::warning ? LOG_WARNING : LOG_ERR)); - syslog(l, out); - if(console) puts(out); + if(!enabled) return; + s_sprintfdv(sf, msg); + filtertext(sf, sf); + int l = (level==log::info ? LOG_INFO : ( level==log::warning ? LOG_WARNING : LOG_ERR)); + syslog(l, sf); + if(console) + { + puts(sf); + fflush(stdout); + } + } + + virtual void open() + { + if(enabled) return; + openlog(ident, LOG_NDELAY, facility); + enabled = true; + } + + virtual void close() + { + if(!enabled) return; + closelog(); + enabled = false; } }; diff --git a/source/src/menus.cpp b/source/src/menus.cpp index 93347e94..3e4d5f6b 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -613,8 +613,6 @@ void rendermenumdl() if(!curmenu) { menustack.setsize(0); return; } gmenu &m = *curmenu; if(!m.mdl) return; - - extern int scr_w, scr_h; glPushMatrix(); glLoadIdentity(); diff --git a/source/src/protos.h b/source/src/protos.h index 411abf85..c2e4e153 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -566,10 +566,12 @@ struct log bool console, enabled; enum level { info = 0, warning, error }; - log() : console(true), enabled(true) {}; + log() : console(true), enabled(false) {}; virtual ~log() {}; virtual void writeline(int level, const char *msg, ...) = 0; + virtual void open() = 0; + virtual void close() = 0; }; extern struct log *newlogger(const char *identity); diff --git a/source/src/server.cpp b/source/src/server.cpp index 1309a839..a1beb1c3 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -978,8 +978,8 @@ void disconnect_client(int n, int reason = -1) client &c = *clients[n]; savedscore *sc = findscore(c, true); if(sc) sc->save(c.state); - if(reason>=0) printf("[%s] disconnecting client %s (%s) \n", c.hostname, c.name, disc_reason(reason)); - else printf("[%s] disconnected client %s \n", c.hostname, c.name); + if(reason>=0) logger->writeline(log::info, "[%s] disconnecting client %s (%s) \n", c.hostname, c.name, disc_reason(reason)); + else logger->writeline(log::info, "[%s] disconnected client %s \n", c.hostname, c.name); c.peer->data = (void *)-1; if(reason>=0) enet_peer_disconnect(c.peer, reason); clients[n]->zap(); @@ -2229,10 +2229,10 @@ void initserver(bool dedicated, int uprate, const char *sdesc, const char *ip, i maxclients = maxcl > 0 ? min(maxcl, MAXCLIENTS) : DEFAULTCLIENTS; servermsinit(master ? master : AC_MASTER_URI, ip, CUBE_SERVINFO_PORT(serverport), sdesc, dedicated); - s_sprintfd(identity)("%s/%d", ip && ip[0] ? ip : "local", serverport); + s_sprintfd(identity)("%s(%d)", ip && ip[0] ? ip : "local", serverport); logger = newlogger(identity); - logger->enabled = dedicated; // log on ded servers only - logger->writeline(log::info, "logging local AssaultCube Server now.."); + if(dedicated) logger->open();; // log on ded servers only + logger->writeline(log::info, "logging local AssaultCube server now.."); if(isdedicated = dedicated) {