1:- module(ap_audit, [record_report/1, show_audit/0, audit_file/1]).    2
    3:- use_module(library(filesex)).    4
    5state_dir(Dir) :-
    6    expand_file_name('~/.antisipasipejabat', [Dir]).
    7
    8audit_file(File) :-
    9    state_dir(Dir),
   10    make_directory_path(Dir),
   11    directory_file_path(Dir, 'audit.log', File).
   12
   13record_report(R) :-
   14    audit_file(File),
   15    get_time(Now),
   16    format_time(string(Stamp), '%FT%T%z', Now),
   17    term_hash(R.scenario, Hash),
   18    setup_call_cleanup(
   19        open(File, append, Out, [encoding(utf8)]),
   20        format(Out, '~s\t~w\t~w\t~w\t~w\t~w~n',
   21               [Stamp, Hash, R.likelihood, R.spread, R.escalation, R.confidence]),
   22        close(Out)).
   23
   24show_audit :-
   25    audit_file(File),
   26    ( exists_file(File) ->
   27        setup_call_cleanup(open(File, read, In, [encoding(utf8)]), copy_stream_data(In, current_output), close(In))
   28    ; format('Belum ada audit log.~n', [])
   29    )