ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/log.c
(Generate patch)

Comparing:
ircd-hybrid-8/src/log.c (file contents), Revision 1325 by michael, Sat Mar 31 10:29:02 2012 UTC vs.
ircd-hybrid/trunk/src/log.c (file contents), Revision 7668 by michael, Wed Jul 20 17:09:49 2016 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3 < *  log.c: Logger functions.
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2016 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 16 | Line 15
15   *
16   *  You should have received a copy of the GNU General Public License
17   *  along with this program; if not, write to the Free Software
18 < *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
18 > *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19   *  USA
21 *
22 *  $Id$
20   */
21  
22 < #include "stdinc.h"
22 > /*! \file log.c
23 > * \brief Logger functions.
24 > * \version $Id$
25 > */
26  
27 + #include "stdinc.h"
28   #include "log.h"
29   #include "irc_string.h"
30   #include "ircd.h"
31   #include "conf.h"
32 < #include "send.h"
32 < #include "s_misc.h"
32 > #include "misc.h"
33  
34  
35 < static struct {
36 <  char path[PATH_MAX + 1];
35 > static struct
36 > {
37 >  char path[HYB_PATH_MAX + 1];
38    size_t size;
39    FILE *file;
40   } log_type_table[LOG_TYPE_LAST];
41  
42  
43 < int
44 < log_add_file(enum log_type type, size_t size, const char *path)
43 > void
44 > log_set_file(enum log_type type, size_t size, const char *path)
45   {
45  if (log_type_table[type].file)
46    fclose(log_type_table[type].file);
47
46    strlcpy(log_type_table[type].path, path, sizeof(log_type_table[type].path));
47    log_type_table[type].size = size;
48  
49 <  return (log_type_table[type].file = fopen(path, "a")) != NULL;
49 >  if (type == LOG_TYPE_IRCD)
50 >    log_type_table[type].file = fopen(log_type_table[type].path, "a");
51   }
52  
53   void
54 < log_close_all(void)
54 > log_del_all(void)
55 > {
56 >  unsigned int type = 0;
57 >
58 >  while (++type < LOG_TYPE_LAST)
59 >    log_type_table[type].path[0] = '\0';
60 > }
61 >
62 > void
63 > log_reopen_all(void)
64   {
65    unsigned int type = 0;
66  
67    while (++type < LOG_TYPE_LAST)
68    {
69 <    if (log_type_table[type].file == NULL)
70 <      continue;
69 >    if (log_type_table[type].file)
70 >    {
71 >      fclose(log_type_table[type].file);
72 >      log_type_table[type].file = NULL;
73 >    }
74  
75 <    fclose(log_type_table[type].file);
76 <    log_type_table[type].file = NULL;
75 >    if (log_type_table[type].path[0])
76 >      log_type_table[type].file = fopen(log_type_table[type].path, "a");
77    }
78   }
79  
# Line 80 | Line 91 | log_exceed_size(unsigned int type)
91    return (size_t)sb.st_size > log_type_table[type].size;
92   }
93  
94 <
95 < static void
85 < write_log(enum log_type type, const char *message)
94 > static void
95 > log_write(enum log_type type, const char *message)
96   {
97 <  char buf[LOG_BUFSIZE];
88 <  size_t nbytes = 0;
89 <  struct tm *lt = localtime(&CurrentTime);
90 <
91 <  nbytes = strftime(buf, sizeof(buf), "[%FT%H:%M:%S%z] ", lt);
92 <  snprintf(buf+nbytes, sizeof(buf)-nbytes, "%s\n", message);
93 <
94 <  fputs(buf, log_type_table[type].file);
97 >  fprintf(log_type_table[type].file, "[%s] %s\n", date_iso8601(0), message);
98    fflush(log_type_table[type].file);
99   }
100  
101   void
102   ilog(enum log_type type, const char *fmt, ...)
103   {
104 <  char buf[LOG_BUFSIZE];
104 >  char buf[LOG_BUFSIZE] = "";
105    va_list args;
106  
107 <  if (log_type_table[type].file == NULL)
107 >  if (!log_type_table[type].file || !ConfigLog.use_logging)
108      return;
109  
110    va_start(args, fmt);
111    vsnprintf(buf, sizeof(buf), fmt, args);
112    va_end(args);
113  
114 <  if (ConfigLoggingEntry.use_logging)
112 <  {
113 <    write_log(type, buf);
114 >  log_write(type, buf);
115  
116 <    if (log_exceed_size(type) <= 0)
117 <      return;
116 >  if (log_exceed_size(type) <= 0)
117 >    return;
118  
119 <    snprintf(buf, sizeof(buf), "Rotating logfile %s",
120 <             log_type_table[type].path);
121 <    write_log(type, buf);
122 <    fclose(log_type_table[type].file);
123 <    log_type_table[type].file = NULL;
124 <
125 <    snprintf(buf, sizeof(buf), "%s.old", log_type_table[type].path);
126 <    unlink(buf);
127 <    rename(log_type_table[type].path, buf);
128 <    log_add_file(type, log_type_table[type].size, log_type_table[type].path);
129 <  }
119 >  snprintf(buf, sizeof(buf), "Rotating logfile %s",
120 >           log_type_table[type].path);
121 >  log_write(type, buf);
122 >
123 >  fclose(log_type_table[type].file);
124 >  log_type_table[type].file = NULL;
125 >
126 >  snprintf(buf, sizeof(buf), "%s.old", log_type_table[type].path);
127 >  unlink(buf);
128 >  rename(log_type_table[type].path, buf);
129 >
130 >  log_set_file(type, log_type_table[type].size, log_type_table[type].path);
131 >  log_type_table[type].file = fopen(log_type_table[type].path, "a");
132   }

Comparing:
ircd-hybrid-8/src/log.c (property svn:keywords), Revision 1325 by michael, Sat Mar 31 10:29:02 2012 UTC vs.
ircd-hybrid/trunk/src/log.c (property svn:keywords), Revision 7668 by michael, Wed Jul 20 17:09:49 2016 UTC

# Line 1 | Line 1
1 < Id Revision
1 > Id

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)