ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/logger.C
(Generate patch)

Comparing deliantra/server/common/logger.C (file contents):
Revision 1.4 by root, Sun Sep 10 16:00:23 2006 UTC vs.
Revision 1.10 by root, Mon Jan 8 23:36:15 2007 UTC

1
2/*
3 * static char *rcsid_loger_c =
4 * "$Id: logger.C,v 1.4 2006/09/10 16:00:23 root Exp $ ";
5 */
6
7/* 1/*
8 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
9 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
10 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
11 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
12 7
13 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
22 17
23 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
25 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 21
27 The authors can be reached via e-mail at crossfire-devel@real-time.com 22 The authors can be reached via e-mail at <crossfire@schmorp.de>
28*/ 23*/
29
30 24
31#include <stdarg.h> 25#include <stdarg.h>
32#include <global.h> 26#include <global.h>
33#include <funcpoint.h> 27#include <funcpoint.h>
34 28
42 */ 36 */
43 37
44void 38void
45LOG (LogLevel logLevel, const char *format, ...) 39LOG (LogLevel logLevel, const char *format, ...)
46{ 40{
47 char buf[20480]; /* This needs to be really really big - larger
48 * than any other buffer, since that buffer may
49 * need to be put in this one.
50 */
51 char tbuf[20480];
52
53 time_t curtime = time (NULL);
54 struct tm *ptime = localtime (&curtime);
55
56 strftime (tbuf, 256, "%Y-%m-%d %H:%M:%S ", ptime);
57
58 va_list ap;
59
60 va_start (ap, format);
61
62 buf[0] = '\0';
63 if (logLevel <= settings.debug) 41 if (logLevel <= settings.debug)
64 { 42 {
43 char msec[20];
44 char buf[20460];
45 char tbuf[20480];
46
47 struct timeval tv;
48 gettimeofday (&tv, 0);
49 struct tm *ptime = localtime (&tv.tv_sec);
50
51 strftime (tbuf, sizeof (tbuf), "%Y-%m-%d %H:%M:%S", ptime);
52 sprintf (msec, ".%03d ", (int)(tv.tv_usec / 1000));
53
54 va_list ap;
55 va_start (ap, format);
65 vsnprintf (buf, sizeof (buf), format, ap); 56 vsnprintf (buf, sizeof (buf), format, ap);
57 va_end (ap);
58
59 strncat (tbuf, msec, sizeof (tbuf));
66 strncat (tbuf, buf, 20460); 60 strncat (tbuf, buf, sizeof (tbuf));
67#ifdef WIN32 /* ---win32 change log handling for win32 */ 61
68 fputs (tbuf, logfile); /* wrote to file or stdout */
69# ifdef DEBUG /* if we have a debug version, we want see ALL output */
70 fflush (logfile); /* so flush this! */
71# endif
72 if (logfile != stderr) /* if was it a logfile wrote it to screen too */
73 fputs (tbuf, stderr);
74#else
75 fputs (tbuf, logfile); 62 fputs (tbuf, logfile);
76#endif 63 fputs (tbuf, stderr);
77 } 64 }
78 if (!exiting && !trying_emergency_save && logLevel == llevError && ++nroferrors > MAX_ERRORS)
79 {
80 exiting = 1;
81 if (!trying_emergency_save)
82 emergency_save (0);
83 }
84 va_end (ap);
85} 65}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines