summaryrefslogtreecommitdiff
path: root/src/log.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-08-27 20:56:28 -0400
committerAdam <Adam@anope.org>2010-08-27 20:56:28 -0400
commitc2ddecc2b1dbc9d055166bdf296da2e4536f74f6 (patch)
tree9b98582630a2debab628e23d4d796885f50ada74 /src/log.cpp
parent73fb94c55344b6ad788c925bf13325236402891f (diff)
Added a new logging system
Diffstat (limited to 'src/log.cpp')
-rw-r--r--src/log.cpp264
1 files changed, 0 insertions, 264 deletions
diff --git a/src/log.cpp b/src/log.cpp
deleted file mode 100644
index 62fa29600..000000000
--- a/src/log.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/* Logging routines.
- *
- * (C) 2003-2010 Anope Team
- * Contact us at team@anope.org
- *
- * Please read COPYING and README for further details.
- *
- * Based on the original code of Epona by Lara.
- * Based on the original code of Services by Andy Church.
- */
-
-#include "services.h"
-
-static FILE *logfile;
-
-static int curday = 0;
-
-/*************************************************************************/
-
-static int get_logname(Anope::string &name, struct tm *tm)
-{
- char timestamp[32];
- time_t t;
-
- if (!tm)
- {
- time(&t);
- tm = localtime(&t);
- }
-
- /* fix bug 577 */
- strftime(timestamp, sizeof(timestamp), "%Y%m%d", tm);
- name = Anope::string("logs/") + timestamp + "." + log_filename;
- curday = tm->tm_yday;
-
- return 1;
-}
-
-/*************************************************************************/
-
-static void remove_log()
-{
- time_t t;
- struct tm tm;
-
- Anope::string name;
-
- if (!Config->KeepLogs)
- return;
-
- time(&t);
- t -= (60 * 60 * 24 * Config->KeepLogs);
- tm = *localtime(&t);
-
- /* removed if from here cause get_logchan is always 1 */
- get_logname(name, &tm);
- DeleteFile(name.c_str());
-}
-
-/*************************************************************************/
-
-static void checkday()
-{
- time_t t;
- struct tm tm;
-
- time(&t);
- tm = *localtime(&t);
-
- if (curday != tm.tm_yday)
- {
- close_log();
- remove_log();
- open_log();
- }
-}
-
-/*************************************************************************/
-
-/* Open the log file. Return -1 if the log file could not be opened, else
- * return 0. */
-
-int open_log()
-{
- Anope::string name;
-
- if (logfile)
- return 0;
-
- /* if removed again.. get_logname is always 1 */
- get_logname(name, NULL);
- logfile = fopen(name.c_str(), "a");
-
- if (logfile)
- setbuf(logfile, NULL);
- return logfile ? 0 : -1;
-}
-
-/*************************************************************************/
-
-/* Close the log file. */
-
-void close_log()
-{
- if (!logfile)
- return;
- fclose(logfile);
- logfile = NULL;
-}
-
-/*************************************************************************/
-
-/* added cause this is used over and over in the code */
-Anope::string log_gettimestamp()
-{
- time_t t;
- struct tm tm;
- char tbuf[256];
-
- time(&t);
- tm = *localtime(&t);
-#if HAVE_GETTIMEOFDAY
- if (debug)
- {
- char *s;
- struct timeval tv;
- gettimeofday(&tv, NULL);
- strftime(tbuf, sizeof(tbuf) - 1, "[%b %d %H:%M:%S", &tm);
- s = tbuf + strlen(tbuf);
- s += snprintf(s, sizeof(tbuf) - (s - tbuf), ".%06d", static_cast<int>(tv.tv_usec));
- strftime(s, sizeof(tbuf) - (s - tbuf) - 1, " %Y]", &tm);
- }
- else
-#endif
- strftime(tbuf, sizeof(tbuf) - 1, "[%b %d %H:%M:%S %Y]", &tm);
- return tbuf;
-}
-
-/*************************************************************************/
-
-/* Like alog(), but tack a ": " and a system error message (as returned by
- * strerror()) onto the end.
- */
-
-void log_perror(const char *fmt, ...)
-{
- va_list args;
- int errno_save = errno;
- char str[BUFSIZE];
-
- checkday();
-
- if (!fmt)
- return;
-
- va_start(args, fmt);
- vsnprintf(str, sizeof(str), fmt, args);
- va_end(args);
-
- Anope::string buf = log_gettimestamp();
-
- if (logfile)
- fprintf(logfile, "%s %s : %s\n", buf.c_str(), str, strerror(errno_save));
- if (nofork)
- fprintf(stderr, "%s %s : %s\n", buf.c_str(), str, strerror(errno_save));
- errno = errno_save;
-}
-
-/*************************************************************************/
-
-/* We've hit something we can't recover from. Let people know what
- * happened, then go down.
- */
-
-void fatal(const char *fmt, ...)
-{
- va_list args;
- char buf2[4096];
-
- checkday();
-
- if (!fmt)
- return;
-
- va_start(args, fmt);
- vsnprintf(buf2, sizeof(buf2), fmt, args);
- va_end(args);
-
- Anope::string buf = log_gettimestamp();
-
- if (logfile)
- fprintf(logfile, "%s FATAL: %s\n", buf.c_str(), buf2);
- if (nofork)
- fprintf(stderr, "%s FATAL: %s\n", buf.c_str(), buf2);
- if (UplinkSock)
- ircdproto->SendGlobops(NULL, "FATAL ERROR! %s", buf2);
-
- /* one of the many places this needs to be called from */
- ModuleRunTimeDirCleanUp();
-
- exit(1);
-}
-
-/*************************************************************************/
-
-/* Same thing, but do it like perror(). */
-
-void fatal_perror(const char *fmt, ...)
-{
- va_list args;
- char buf2[4096];
- int errno_save = errno;
-
- checkday();
-
- if (!fmt)
- return;
-
- va_start(args, fmt);
- vsnprintf(buf2, sizeof(buf2), fmt, args);
- va_end(args);
-
- Anope::string buf = log_gettimestamp();
-
- if (logfile)
- fprintf(logfile, "%s FATAL: %s: %s\n", buf.c_str(), buf2, strerror(errno_save));
- if (nofork)
- fprintf(stderr, "%s FATAL: %s: %s\n", buf.c_str(), buf2, strerror(errno_save));
- if (UplinkSock)
- ircdproto->SendGlobops(NULL, "FATAL ERROR! %s: %s", buf2, strerror(errno_save));
-
- /* one of the many places this needs to be called from */
- ModuleRunTimeDirCleanUp();
-
- exit(1);
-}
-
-Alog::Alog(LogLevel val) : Level(val)
-{
- if (Level >= LOG_DEBUG)
- buf << "Debug: ";
-}
-
-Alog::~Alog()
-{
- if (Level >= LOG_DEBUG && (Level - LOG_DEBUG + 1) > debug)
- return;
-
- int errno_save = errno;
-
- checkday();
-
- Anope::string tbuf = log_gettimestamp();
-
- if (logfile)
- fprintf(logfile, "%s %s\n", tbuf.c_str(), buf.str().c_str());
- if (nofork)
- std::cout << tbuf << " " << buf.str() << std::endl;
- else if (Level == LOG_TERMINAL) // XXX dont use this yet unless you know we're at terminal and not daemonized
- std::cout << buf.str() << std::endl;
- if (Config && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel))
- ircdproto->SendPrivmsg(Global, Config->LogChannel, "%s", buf.str().c_str());
- errno = errno_save;
-}