-- System_Log, a binding to the Unix syslog functions -- Copyright 2009 B. Persson, Bjorn@Rombobeorn.se -- -- This library is free software: you can redistribute it and/or modify it -- under the terms of the GNU General Public License version 3, as published -- by the Free Software Foundation. package System_Log is -- System_Log is a binding to the Unix syslog functions. The logging -- functionality is common to all tasks. This binding is tasking-safe if the -- underlying C library is, except as noted below for Open_Log and Close_Log. type Log_Facility is (Kernel, -- kernel messages User, -- random user-level messages Mail, -- mail system Daemon, -- system daemons Syslog, -- messages generated internally by syslogd LPR, -- line printer subsystem News, -- network news subsystem UUCP, -- UUCP subsystem Cron, -- clock daemon Authpriv, -- security/authorization messages (private) FTP, -- ftp daemon Local0, -- reserved for local use Local1, -- reserved for local use Local2, -- reserved for local use Local3, -- reserved for local use Local4, -- reserved for local use Local5, -- reserved for local use Local6, -- reserved for local use Local7); -- reserved for local use type Log_Level is (Emergency, -- system is unusable Alert, -- action must be taken immediately Critical, -- critical conditions Error, -- error conditions Warning, -- warning conditions Notice, -- normal but significant condition Info, -- informational Debug); -- debug-level messages type Log_Levels is array(Log_Level) of Boolean; for Log_Levels'Size use 8; pragma Pack(Log_Levels); procedure Open_Log(Source_Name : in String; Facility : in Log_Facility; Console_On_Error : in Boolean := False; Delay_Open : in Boolean := True; Standard_Error_Too : in Boolean := False; Include_PID : in Boolean := False); -- Open_Log is used to specify how logging shall be done. It will connect to -- the system logger if Delay_Open is false. Calling Open_Log is optional. -- The connection to the system logger will be opened if necessary when Log -- is called. -- Open_Log will normally only be called once. If it must be called again, -- Close_Log should be called in between to avoid leaking memory. procedure Set_Log_Levels(New_Levels : in Log_Levels); procedure Set_Log_Levels(New_Levels : in Log_Levels; Old_Levels : out Log_Levels); -- Set_Log_Levels activates those log levels that are true in New_Levels and -- deactivates those that are false. The second form reports in Old_Levels -- which log levels were active before the call. procedure Set_Log_Threshold(Threshold : in Log_Level); -- Set_Log_Threshold activates the log levels from Emergency to Threshold, -- inclusive, and deactivates the rest. procedure Log(Level : in Log_Level; Message : in String); -- Sends the message Message to the system logger if the log level Level is -- active, using the facility that was passed to Open_Log. procedure Log(Facility : in Log_Facility; Level : in Log_Level; Message : in String); -- Sends the message Message to the system logger if the log level Level is -- active, using the facility Facility. procedure Close_Log; -- Close_Log closes the connection to the system logger. Calling Close_Log -- before terminating is optional. In a multitasked program, Close_Log should -- not be called from multiple tasks simultaneously. end System_Log;