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.1 by elmex, Sun Aug 13 17:16:00 2006 UTC vs.
Revision 1.5 by root, Thu Sep 14 22:33:59 2006 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines