Software / code / prosody-modules
Annotate
mod_log_json/mod_log_json.lua @ 4306:747a14017d00
muc_room_mention_notifications: Set xmlns to what's used in the protoXEP
| author | JC Brand <jc@opkode.com> |
|---|---|
| date | Mon, 21 Dec 2020 15:41:58 +0100 |
| parent | 3758:900ea02ab00b |
| child | 4462:4356088ad675 |
| rev | line source |
|---|---|
| 3732 | 1 local pack = require "util.table".pack; |
| 2 local json = require "util.json"; | |
| 3 local array = require "util.array"; | |
| 4 local datetime = require "util.datetime".datetime; | |
| 3746 | 5 local socket = require "socket"; |
| 3732 | 6 |
| 7 module:set_global(); | |
| 8 | |
| 9 local function sink_maker(config) | |
| 3746 | 10 local send = function () end |
| 11 if config.filename then | |
| 12 local logfile = io.open(config.filename, "a+"); | |
| 13 logfile:setvbuf("no"); | |
| 14 function send(payload) | |
| 15 logfile:write(payload, "\n"); | |
| 16 end | |
| 17 elseif config.udp_host and config.udp_port then | |
| 18 local conn = socket.udp(); | |
|
3748
27abf3b6819a
mod_log_json: Use correct method to specify remote endpoint
Kim Alvefur <zash@zash.se>
parents:
3747
diff
changeset
|
19 conn:setpeername(config.udp_host, config.udp_port); |
| 3746 | 20 function send(payload) |
| 21 conn:send(payload); | |
| 22 end | |
| 23 end | |
| 3732 | 24 return function (source, level, message, ...) |
| 25 local args = pack(...); | |
| 26 for i = 1, args.n do | |
| 27 if args[i] == nil then | |
| 28 args[i] = json.null; | |
| 29 elseif type(args[i]) ~= "string" or type(args[i]) ~= "number" then | |
| 30 args[i] = tostring(args[i]); | |
| 31 end | |
| 32 end | |
| 33 args.n = nil; | |
| 34 local payload = { | |
| 35 datetime = datetime(), | |
| 36 source = source, | |
| 37 level = level, | |
| 38 message = message, | |
| 39 args = array(args); | |
| 40 }; | |
| 3746 | 41 send(json.encode(payload)); |
| 3732 | 42 end |
| 43 end | |
| 44 | |
|
3758
900ea02ab00b
mod_log_json: Deregister log sink on unload
Kim Alvefur <zash@zash.se>
parents:
3748
diff
changeset
|
45 function module.unload() |
|
900ea02ab00b
mod_log_json: Deregister log sink on unload
Kim Alvefur <zash@zash.se>
parents:
3748
diff
changeset
|
46 -- deregister |
|
900ea02ab00b
mod_log_json: Deregister log sink on unload
Kim Alvefur <zash@zash.se>
parents:
3748
diff
changeset
|
47 require"core.loggingmanager".register_sink_type("json", nil); |
|
900ea02ab00b
mod_log_json: Deregister log sink on unload
Kim Alvefur <zash@zash.se>
parents:
3748
diff
changeset
|
48 end |
|
900ea02ab00b
mod_log_json: Deregister log sink on unload
Kim Alvefur <zash@zash.se>
parents:
3748
diff
changeset
|
49 |
| 3732 | 50 require"core.loggingmanager".register_sink_type("json", sink_maker); |