Ensure that message are logged to syslog when appropriate, even in child handlers.
[ashd.git] / lib / log.c
CommitLineData
ddf99192
FT
1/*
2 ashd - A Sane HTTP Daemon
3 Copyright (C) 2008 Fredrik Tolf <fredrik@dolda2000.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include <stdlib.h>
20#include <stdarg.h>
21#include <stdio.h>
22#include <syslog.h>
23
33733396
FT
24#ifdef HAVE_CONFIG_H
25#include <config.h>
26#endif
ddf99192 27#include <utils.h>
d341283f 28#include <log.h>
ddf99192 29
d341283f 30static int inited = 0;
ddf99192
FT
31static int tostderr = 1, tosyslog = 0;
32
d341283f
FT
33static void initlog(void)
34{
35 inited = 1;
36 if(getenv("ASHD_USESYSLOG") != NULL)
37 opensyslog();
38}
39
ddf99192
FT
40void flog(int level, char *format, ...)
41{
42 va_list args;
43
d341283f
FT
44 if(!inited)
45 initlog();
ddf99192
FT
46 va_start(args, format);
47 if(tostderr) {
48 vfprintf(stderr, format, args);
49 fprintf(stderr, "\n");
50 } else if(tosyslog) {
51 vsyslog(level, format, args);
52 }
53 va_end(args);
54}
55
56void opensyslog(void)
57{
d341283f
FT
58 if(!inited)
59 initlog();
ddf99192
FT
60 openlog("ashd", 0, LOG_DAEMON);
61 tostderr = 0;
62 tosyslog = 1;
63}