comparison mod_log_ringbuffer/README.markdown @ 4205:481c4d75e77d

mod_log_ringbuffer: New module to send logs to an in-memory ringbuffer
author Matthew Wild <mwild1@gmail.com>
date Thu, 15 Oct 2020 16:47:21 +0100
parents
children 86f8ece24029
comparison
equal deleted inserted replaced
4204:a5930a185806 4205:481c4d75e77d
1 ---
2 labels:
3 - 'Stage-Beta'
4 summary: 'Log to in-memory ringbuffer'
5 ...
6
7 Introduction
8 ============
9
10 Sometimes debug logs are too verbose for continuous logging to disk. However
11 occasionally you may be interested in the debug logs when a certain event occurs.
12
13 This module allows you to store all logs in a fixed-size buffer in Prosody's memory,
14 and dump them to a file whenever you want.
15
16 # Configuration
17
18 First of all, you need to load the module by adding it to your global `modules_enabled`:
19
20 ``` {.lua}
21 modules_enabled = {
22 ...
23 "log_ringbuffer";
24 ...
25 }
26 ```
27
28 By default the module will do nothing - you need to configure a log sink, using Prosody's
29 usual [logging configuration](https://prosody.im/doc/advanced_logging).
30
31 ``` {.lua}
32 log = {
33 -- Log errors to a file
34 error = "/var/log/prosody/prosody.err";
35
36 -- Log debug and higher to a 2MB buffer
37 { level = "debug", to = "ringbuffer", size = 1024*1024*2, filename = "debug-logs-{pid}-{count}.log", signal = "SIGUSR2" };
38 }
39 ```
40
41 The possible fields of the logging config entry are:
42
43 `to`
44 : Set this to `"ringbuffer"`.
45
46 `level`
47 : The minimum log level to capture, e.g. `"debug"`.
48
49 `size`
50 : The size, in bytes, of the buffer. When the buffer fills,
51 old data will be overwritten by new data.
52
53 `filename`
54 : The name of the file to dump logs to when triggered. The filename may
55 contain a number of variables, described below.
56
57 Only one of the following triggers may be specified:
58
59 `signal`
60 : A signal that will cause the buffer to be dumped, e.g. `"SIGUSR2"`.
61 Do not use any signal that is used by any other Prosody module, to
62 avoid conflicts.
63
64 `event`
65 : Alternatively, the name of a Prosody global event that will trigger
66 the logs to be dumped, e.g. `"config-reloaded"`.
67
68 ## Filename variables
69
70 `pid`
71 : The PID of the current process
72
73 `count`
74 : A counter that begins at 0 and increments for each dump made by
75 the current process.
76
77 `time`
78 : The unix timestamp at which the dump is made. It can be formatted
79 to human-readable local time using `{time|yyyymmdd}` and `{time|hhmmss}`.
80
81 `paths`
82 : Allows access to Prosody's known filesystem paths, use e.g. `{paths.data}`
83 for the path to Prosody's data directory.
84
85 The filename does not have to be unique for every dump - if a file with the same
86 name already exists, it will be appended to.
87
88 # Compatibility
89
90 0.11 and later.