1:- module(lsp_logs, [
2 use_log_file_handler/1
3]). 4
5:- use_module(library(log4p)). 6:- use_module(library(yall)). 7
8log4p:timestamped_log_handler(Level, Message) :-
9 get_time(Timestamp),
10 format_time(string(FormattedTimestamp), "%FT%T%z", Timestamp),
11 process_id(PID),
12 ignore(
13 (writef('%w : %w : %w : %w\n',[FormattedTimestamp, Level, PID, Message]),
14 flush_output)
15 ).
16
17use_log_file_handler(FileName) :-
18 retractall(log4p:log_handler(_)),
19 open(FileName, append, LogStream,[create([default])]),
20 LogHandler = {LogStream}/[Level, Message] >>
21 with_output_to(LogStream, timestamped_log_handler(Level,Message)),
22 add_log_handler(LogHandler),
23 at_halt(close(LogStream))