src/server/daemon/log.h

Wed, 05 Jun 2024 19:50:44 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 05 Jun 2024 19:50:44 +0200
changeset 537
ad44e72fbf50
parent 447
45d1b02fa80b
permissions
-rw-r--r--

add extra nullptr check in the event loop to handle the case when the finish ptr is set to NULL after it was already scheduled

28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
44
3da1f7b6847f added some error messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
4 * Copyright 2013 Olaf Wintermann. All rights reserved.
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #ifndef LOG_H
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #define LOG_H
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #include "../public/nsapi.h"
415
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
33 #include <cx/string.h>
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
34 #include <cx/utils.h>
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
45
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
36 #include <inttypes.h>
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
37
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 #ifdef __cplusplus
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 extern "C" {
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 #endif
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 typedef struct {
256
19259b6c5cf7 replace old server config loader
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 167
diff changeset
43 const char *file;
19259b6c5cf7 replace old server config loader
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 167
diff changeset
44 const char *level;
19259b6c5cf7 replace old server config loader
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 167
diff changeset
45 int log_stdout;
19259b6c5cf7 replace old server config loader
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 167
diff changeset
46 int log_stderr;
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 } LogConfig;
45
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
48
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
49 typedef struct {
77
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
50 FILE *file;
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
51 uint32_t ref;
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
52 } LogFile;
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
53
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
54 typedef struct {
415
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
55 cxmutstr file;
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
56 cxmutstr format; // unused
77
f1cff81e425a some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 60
diff changeset
57 LogFile *log;
45
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
58 } AccessLog;
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
59
167
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
60 typedef void (*log_writefunc)(void *cookie, char *msg, size_t length);
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
61 typedef struct {
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
62 log_writefunc write;
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
63 void *cookie;
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
64 } LogDup;
442
05c2b62448b1 fix stdout log message duplicates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 434
diff changeset
65
447
45d1b02fa80b add missing init_logging declaration
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 442
diff changeset
66 int init_logging(void);
45d1b02fa80b add missing init_logging declaration
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 442
diff changeset
67
45
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
68 // server logging
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 int init_log_file(LogConfig *cfg);
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 void log_uninitialized_writeln(char *str, size_t len);
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 void log_file_writeln(char *str, size_t len);
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74
415
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
75 cxmutstr log_get_prefix(int level);
434
ff576305ae6e redirect stdout/stderr to log file
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 415
diff changeset
76 cxmutstr log_get_prefix_str(const char *level);
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77
167
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
78 void log_add_logdup(LogDup *dup);
4be7dd2b75b9 srvctrl gets log messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 91
diff changeset
79 void log_remove_logdup(LogDup *dup);
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80
45
a24aa388f02f added access log
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
81 // access logging
415
d938228c382e switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 256
diff changeset
82 LogFile* get_access_log_file(cxstring file);
28
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 #ifdef __cplusplus
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 }
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 #endif
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 #endif /* LOG_H */
f387669912e8 added logging
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89

mercurial