1--  This file is covered by the Internet Software Consortium (ISC) License
2--  Reference: ../../License.txt
3
4with CommonText;
5with AdaBase.Logger.Base.File;
6with AdaBase.Logger.Base.Screen;
7
8package AdaBase.Logger.Facility is
9
10   package CT  renames CommonText;
11   package AL  renames AdaBase.Logger.Base;
12   package ALF renames AdaBase.Logger.Base.File;
13   package ALS renames AdaBase.Logger.Base.Screen;
14
15   type LogFacility is tagged private;
16   type LogFacility_access is access all LogFacility;
17   type TAction is (attach, detach);
18   type TLogger is (file, screen);
19
20   ALREADY_ATTACHED  : exception;
21   ALREADY_DETACHED  : exception;
22
23   procedure standard_logger (facility : out LogFacility;
24                              logger   : TLogger;
25                              action   : TAction);
26   procedure set_log_file    (facility : LogFacility;
27                              filename : String);
28   procedure set_error_mode (facility : out LogFacility;
29                             mode     : Error_Modes);
30   function  error_mode     (facility : LogFacility) return Error_Modes;
31
32   procedure detach_custom_logger (facility : out LogFacility);
33   procedure attach_custom_logger (facility : out LogFacility;
34                                   logger_access : AL.BaseClass_Logger_access);
35
36   procedure log_nominal (facility  : LogFacility;
37                          driver    : Driver_Type;
38                          category  : Log_Category;
39                          message   : CT.Text);
40
41   procedure log_problem
42     (facility   : LogFacility;
43      driver     : Driver_Type;
44      category   : Log_Category;
45      message    : CT.Text;
46      error_msg  : CT.Text      := CT.blank;
47      error_code : Driver_Codes := 0;
48      sqlstate   : SQL_State    := stateless;
49      break      : Boolean      := False);
50
51private
52   type LogFacility is tagged record
53      prop_error_mode : Error_Modes := warning;
54      listener_file   : ALF.File_Logger_access := null;
55      listener_screen : ALS.Screen_Logger_access := null;
56      listener_custom : AL.BaseClass_Logger_access := null;
57   end record;
58
59   logger_file     : aliased ALF.File_Logger;
60   logger_screen   : aliased ALS.Screen_Logger;
61
62end AdaBase.Logger.Facility;
63