]> git.decadent.org.uk Git - nfs-utils.git/blob - utils/statd/log.c
bf66547aa50546169e99b67f79fcda0b3bdf1d82
[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  *
6  * NSM for Linux.
7  */
8
9 /* 
10  *      log.c - logging functions for lockd/statd
11  *      260295   okir   started with simply syslog logging.
12  */
13
14 #include "config.h"
15
16 #include <syslog.h>
17 #include <unistd.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <string.h>
21 #include <stdarg.h>
22 #include <time.h>
23 #include <sys/types.h>
24 #include "log.h"
25
26 static char     progname[256];
27 static pid_t    mypid;
28                                 /* Turns on logging to console/stderr. */
29 static int      opt_debug = 0;  /* Will be command-line option, eventually */
30
31 void
32 log_init(char *name)
33 {
34     char        *sp;
35
36     openlog(name, LOG_PID, LOG_LOCAL5);
37     if ((sp = strrchr(name, '/')) != NULL)
38         name = ++sp;
39     strncpy(progname, name, sizeof (progname) - 1);
40     progname[sizeof (progname) - 1] = '\0';
41     mypid = getpid();
42 }
43
44 void
45 log_background(void)
46 {
47     /* NOP */
48 }
49
50 void
51 log_enable(int level)
52 {
53     opt_debug = 1;
54 }
55
56 int
57 log_enabled(int level)
58 {
59     return opt_debug;
60 }
61
62 void
63 die(char *fmt, ...)
64 {
65     char        buffer[1024];
66     va_list     ap;
67
68     va_start(ap, fmt);
69     vsnprintf (buffer, 1024, fmt, ap);
70     va_end(ap);
71     buffer[1023]=0;
72
73     log(L_FATAL, "%s", buffer);
74
75 #ifndef DEBUG
76     exit (2);
77 #else
78     abort();    /* make a core */
79 #endif
80 }
81
82 void
83 log(int level, char *fmt, ...)
84 {
85     char        buffer[1024];
86     va_list     ap;
87
88     va_start(ap, fmt);
89     vsnprintf (buffer, 1024, fmt, ap);
90     va_end(ap);
91     buffer[1023]=0;
92
93     if (level < L_DEBUG) {
94         syslog(level, "%s", buffer);
95     }
96
97     if (opt_debug) {
98         time_t          now;
99         struct tm *     tm;
100
101         time(&now);
102         tm = localtime(&now);
103         fprintf (stderr, "%02d.%02d.%02d %02d:%02d:%02d %s[%d]: %s\n",
104                         tm->tm_mday, tm->tm_mon, tm->tm_year,
105                         tm->tm_hour, tm->tm_min, tm->tm_sec,
106                         progname, mypid,
107                         buffer);
108     }
109 }