105 dump_buffer(dump, sink_config.filename or get_filename(sink_config.filename_template)); |
107 dump_buffer(dump, sink_config.filename or get_filename(sink_config.filename_template)); |
106 end |
108 end |
107 |
109 |
108 if sink_config.signal then |
110 if sink_config.signal then |
109 module:hook_global("signal/"..sink_config.signal, handler); |
111 module:hook_global("signal/"..sink_config.signal, handler); |
|
112 event_hooks[handler] = "signal/"..sink_config.signal; |
110 elseif sink_config.event then |
113 elseif sink_config.event then |
111 module:hook_global(sink_config.event, handler); |
114 module:hook_global(sink_config.event, handler); |
|
115 event_hooks[handler] = sink_config.event; |
112 end |
116 end |
113 |
117 |
114 return function (name, level, message, ...) |
118 return function (name, level, message, ...) |
115 local line = format("%s%s\t%s\t%s\n", timestamps and os_date(timestamps) or "", name, level, format(message, ...)); |
119 local line = format("%s%s\t%s\t%s\n", timestamps and os_date(timestamps) or "", name, level, format(message, ...)); |
116 write(line); |
120 write(line); |
117 end; |
121 end; |
118 end |
122 end |
119 |
123 |
|
124 module:hook_global("reopen-log-files", function() |
|
125 for handler, event_name in pairs(event_hooks) do |
|
126 module:unhook_object_event(prosody.events, event_name, handler); |
|
127 event_hooks[handler] = nil; |
|
128 end |
|
129 end, 1); |
|
130 |
120 loggingmanager.register_sink_type("ringbuffer", ringbuffer_log_sink_maker); |
131 loggingmanager.register_sink_type("ringbuffer", ringbuffer_log_sink_maker); |