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 )