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.5 by root, Thu Sep 14 22:33:59 2006 UTC vs.
Revision 1.10 by root, Mon Jan 8 23:36:15 2007 UTC

1/* 1/*
2 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
3 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
5 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
6 7
7 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
8 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
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 21
21 The authors can be reached via e-mail at <crossfire@schmorp.de> 22 The authors can be reached via e-mail at <crossfire@schmorp.de>
22*/ 23*/
23 24
24
25#include <stdarg.h> 25#include <stdarg.h>
26#include <global.h> 26#include <global.h>
27#include <funcpoint.h> 27#include <funcpoint.h>
28 28
29/* 29/*
36 */ 36 */
37 37
38void 38void
39LOG (LogLevel logLevel, const char *format, ...) 39LOG (LogLevel logLevel, const char *format, ...)
40{ 40{
41 char buf[20480]; /* This needs to be really really big - larger
42 * than any other buffer, since that buffer may
43 * need to be put in this one.
44 */
45 char tbuf[20480];
46
47 time_t curtime = time (NULL);
48 struct tm *ptime = localtime (&curtime);
49
50 strftime (tbuf, 256, "%Y-%m-%d %H:%M:%S ", ptime);
51
52 va_list ap;
53
54 va_start (ap, format);
55
56 buf[0] = '\0';
57 if (logLevel <= settings.debug) 41 if (logLevel <= settings.debug)
58 { 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);
59 vsnprintf (buf, sizeof (buf), format, ap); 56 vsnprintf (buf, sizeof (buf), format, ap);
57 va_end (ap);
58
59 strncat (tbuf, msec, sizeof (tbuf));
60 strncat (tbuf, buf, 20460); 60 strncat (tbuf, buf, sizeof (tbuf));
61#ifdef WIN32 /* ---win32 change log handling for win32 */ 61
62 fputs (tbuf, logfile); /* wrote to file or stdout */
63# ifdef DEBUG /* if we have a debug version, we want see ALL output */
64 fflush (logfile); /* so flush this! */
65# endif
66 if (logfile != stderr) /* if was it a logfile wrote it to screen too */
67 fputs (tbuf, stderr);
68#else
69 fputs (tbuf, logfile); 62 fputs (tbuf, logfile);
70#endif 63 fputs (tbuf, stderr);
71 } 64 }
72 if (!exiting && !trying_emergency_save && logLevel == llevError && ++nroferrors > MAX_ERRORS)
73 {
74 exiting = 1;
75 if (!trying_emergency_save)
76 emergency_save (0);
77 }
78 va_end (ap);
79} 65}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines