--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_log_ringbuffer/README.markdown Thu Oct 15 16:47:21 2020 +0100
@@ -0,0 +1,90 @@
+---
+labels:
+- 'Stage-Beta'
+summary: 'Log to in-memory ringbuffer'
+...
+
+Introduction
+============
+
+Sometimes debug logs are too verbose for continuous logging to disk. However
+occasionally you may be interested in the debug logs when a certain event occurs.
+
+This module allows you to store all logs in a fixed-size buffer in Prosody's memory,
+and dump them to a file whenever you want.
+
+# Configuration
+
+First of all, you need to load the module by adding it to your global `modules_enabled`:
+
+``` {.lua}
+modules_enabled = {
+ ...
+ "log_ringbuffer";
+ ...
+}
+```
+
+By default the module will do nothing - you need to configure a log sink, using Prosody's
+usual [logging configuration](https://prosody.im/doc/advanced_logging).
+
+``` {.lua}
+log = {
+ -- Log errors to a file
+ error = "/var/log/prosody/prosody.err";
+
+ -- Log debug and higher to a 2MB buffer
+ { level = "debug", to = "ringbuffer", size = 1024*1024*2, filename = "debug-logs-{pid}-{count}.log", signal = "SIGUSR2" };
+}
+```
+
+The possible fields of the logging config entry are:
+
+`to`
+: Set this to `"ringbuffer"`.
+
+`level`
+: The minimum log level to capture, e.g. `"debug"`.
+
+`size`
+: The size, in bytes, of the buffer. When the buffer fills,
+ old data will be overwritten by new data.
+
+`filename`
+: The name of the file to dump logs to when triggered. The filename may
+ contain a number of variables, described below.
+
+Only one of the following triggers may be specified:
+
+`signal`
+: A signal that will cause the buffer to be dumped, e.g. `"SIGUSR2"`.
+ Do not use any signal that is used by any other Prosody module, to
+ avoid conflicts.
+
+`event`
+: Alternatively, the name of a Prosody global event that will trigger
+ the logs to be dumped, e.g. `"config-reloaded"`.
+
+## Filename variables
+
+`pid`
+: The PID of the current process
+
+`count`
+: A counter that begins at 0 and increments for each dump made by
+ the current process.
+
+`time`
+: The unix timestamp at which the dump is made. It can be formatted
+ to human-readable local time using `{time|yyyymmdd}` and `{time|hhmmss}`.
+
+`paths`
+: Allows access to Prosody's known filesystem paths, use e.g. `{paths.data}`
+ for the path to Prosody's data directory.
+
+The filename does not have to be unique for every dump - if a file with the same
+name already exists, it will be appended to.
+
+# Compatibility
+
+0.11 and later.