]> git.decadent.org.uk Git - nfs-utils.git/blob - utils/statd/log.c
Define and use HIAVE_IFADDRS_H
[nfs-utils.git] / utils / statd / log.c
1 /*
2  * Copyright (C) 1995 Olaf Kirch
3  * Modified by Jeffrey A. Uphoff, 1995, 1997, 1999.
4  * Modified by H.J. Lu, 1998.
5  * Modified by Lon Hohberger, Oct. 2000
6  *
7  * NSM for Linux.
8  */
9
10 /* 
11  *      log.c - logging functions for lockd/statd
12  *      260295   okir   started with simply syslog logging.
13  */
14
15 #ifdef HAVE_CONFIG_H
16 #include <config.h>
17 #endif
18
19 #include <syslog.h>
20 #include <unistd.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include <stdarg.h>
25 #include <time.h>
26 #include <sys/types.h>
27 #include "log.h"
28 #include "statd.h"
29
30 static pid_t    mypid;
31                                                                 /* Turns on logging to console/stderr. */
32 static int      opt_debug = 0;  /* Will be command-line option, eventually */
33
34 void log_init()
35 {
36         if (!(run_mode & MODE_LOG_STDERR)) 
37                 openlog(name_p, LOG_PID | LOG_NDELAY, LOG_DAEMON);
38
39         mypid = getpid();
40
41         note(N_WARNING,"Version %s Starting",version_p);
42 }
43
44 void log_background(void)
45 {
46         /* NOP */
47 }
48
49 void die(char *fmt, ...)
50 {
51         char    buffer[1024];
52         va_list ap;
53
54         va_start(ap, fmt);
55         vsnprintf (buffer, 1024, fmt, ap);
56         va_end(ap);
57         buffer[1023]=0;
58
59         note(N_FATAL, "%s", buffer);
60
61 #ifndef DEBUG
62         exit (2);
63 #else
64         abort();        /* make a core */
65 #endif
66 }
67
68 void note(int level, char *fmt, ...)
69 {
70         char    buffer[1024];
71         va_list ap;
72
73         va_start(ap, fmt);
74         vsnprintf (buffer, 1024, fmt, ap);
75         va_end(ap);
76         buffer[1023]=0;
77
78         if ((!(run_mode & MODE_LOG_STDERR)) && (level < N_DEBUG)) {
79                 syslog(level, "%s", buffer);
80         } else if (run_mode & MODE_LOG_STDERR) {
81                 /* Log everything, including dprintf() stuff to stderr */
82                 time_t          now;
83                 struct tm *     tm;
84
85                 time(&now);
86                 tm = localtime(&now);
87                 fprintf (stderr, "%02d/%02d/%04d %02d:%02d:%02d %s[%d]: %s\n",
88                         tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900,
89                         tm->tm_hour, tm->tm_min, tm->tm_sec,
90                         name_p, mypid,
91                         buffer);
92         }
93 }