Mercurial > prosody-modules
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. |