author | Matthew Wild <mwild1@gmail.com> |
Sun, 03 Mar 2024 16:10:14 +0000 | |
changeset 5860 | 6fe4dab27187 |
parent 4466 | 4356088ad675 |
permissions | -rw-r--r-- |
3739 | 1 |
--- |
2 |
summary: JSON Log Sink |
|
3 |
--- |
|
4 |
||
5 |
Conifiguration |
|
6 |
============== |
|
7 |
||
3749
e43a82ddde12
mod_log_json/README: Add a sentence about the first example
Kim Alvefur <zash@zash.se>
parents:
3740
diff
changeset
|
8 |
Here we log to `/var/log/prosody/prosody.json`: |
e43a82ddde12
mod_log_json/README: Add a sentence about the first example
Kim Alvefur <zash@zash.se>
parents:
3740
diff
changeset
|
9 |
|
3739 | 10 |
``` {.lua} |
11 |
log = { |
|
12 |
-- your other log sinks |
|
13 |
info = "/var/log/prosody/prosody.log" |
|
14 |
-- add this: |
|
15 |
{ to = "json", filename = "/var/log/prosody/prosody.json" }; |
|
16 |
} |
|
17 |
``` |
|
18 |
||
3750 | 19 |
## UDP |
20 |
||
21 |
Alternatively, it can send logs via UDP: |
|
22 |
||
23 |
```lua |
|
24 |
log = { |
|
25 |
{ to = "json", udp_host = "10.1.2.3", udp_port = "9999" }; |
|
26 |
} |
|
27 |
``` |
|
28 |
||
3739 | 29 |
Format |
30 |
====== |
|
31 |
||
32 |
JSON log files consist of a series of `\n`-separated JSON objects, |
|
33 |
suitable for mangling with tools like |
|
34 |
[`jq`](https://stedolan.github.io/jq/). |
|
35 |
||
3740
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
36 |
Example (with whitespace and indentation for readability): |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
37 |
|
3739 | 38 |
``` {.json} |
3740
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
39 |
{ |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
40 |
"args" : [], |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
41 |
"datetime" : "2019-11-03T13:38:28Z", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
42 |
"level" : "info", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
43 |
"message" : "Client connected", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
44 |
"source" : "c2s55f267f5b9d0" |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
45 |
} |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
46 |
{ |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
47 |
"args" : [ |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
48 |
"user@example.net" |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
49 |
], |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
50 |
"datetime" : "2019-11-03T13:38:28Z", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
51 |
"level" : "debug", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
52 |
"message" : "load_roster: asked for: %s", |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
53 |
"source" : "rostermanager" |
3784bbcbb8ff
mod_log_json: Prettify JSON for readability
Kim Alvefur <zash@zash.se>
parents:
3739
diff
changeset
|
54 |
} |
3739 | 55 |
``` |
56 |
||
57 |
`datetime` |
|
58 |
: [XEP-0082]-formatted timestamp. |
|
59 |
||
60 |
`source` |
|
61 |
: Log source, usually a module or a connected session. |
|
62 |
||
63 |
`level` |
|
64 |
: `debug`, `info`, `warn` or `error` |
|
65 |
||
66 |
`message` |
|
67 |
: The log message in `printf` format. Combine with `args` to get the |
|
68 |
final message. |
|
69 |
||
70 |
`args` |
|
71 |
: Array of extra arguments, corresponding to `printf`-style `%s` |
|
72 |
formatting in the `message`. |
|
4466
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
73 |
|
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
74 |
Formatted message |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
75 |
----------------- |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
76 |
|
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
77 |
If desired, at the obvious expense of performance, the formatted version of |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
78 |
the string can be included in the JSON object by specifying the `formatted_as` |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
79 |
key in the logger config: |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
80 |
|
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
81 |
``` {.lua} |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
82 |
log = { |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
83 |
-- ... other sinks ... |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
84 |
{ to = "json", formatted_as = "msg_formatted", filename = "/var/log/prosody/prosody.json" }; |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
85 |
} |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
86 |
|
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
87 |
``` |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
88 |
|
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
89 |
This will expose the formatted message in the JSON as separate `msg_formatted` |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
90 |
key. It is possible to override existing keys using this (for example, the |
4356088ad675
mod_log_json: allow logging of formatted message
Jonas Schäfer <jonas@wielicki.name>
parents:
3750
diff
changeset
|
91 |
`message` key), but not advisible. |