mod_log_ringbuffer/README.markdown
changeset 4209 481c4d75e77d
child 4219 86f8ece24029
equal deleted inserted replaced
4208:a5930a185806 4209: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.