This module defines a derived type, procedures, a variable, and constants to be used for logging information and reporting errors in Fortran applications. (Specification)
The derived type, logger_type
, is to be used to define variables to
serve as both local and global loggers. A logger directs its messages
to selected I/O units so the user has a record (a log) of major events.
For each entity of logger_type
the reports go to a list of I/O units
represented by the private internal array, log_units
. If log_units
is
empty then output by default goes to output_unit
. Otherwise reports
go to output_unit
only if it has been explicitly added to log_units
.
Each entity of type logger_type
also maintains an internal state
controlling the formatting of output.
The procedures are as follows. The logical function
log_units_assigned
returns the number of I/O units in log_units
. The
subroutines add_log_file
and add_log_unit
include the specified file
in log_units
. remove_log_units
removes the specified logical unit from
the log_units
array and optionally closes the file. configure
configures the details of the logging process. configuration
reports the details of that configuration. The subroutines
log_error
, log_information
, log_io_error
, log_message
,
log_text_error
, and log_warning
send messages to the log units.
The variable global_logger
of type logger_type
can be used
as a default global logger anywhere in the source code.
The constants are used to report errors by some of the subroutines
in their optional stat
arguments. The constants are as follows.
success
indicates that no error has occurred. close_failure
indicates that a close
statement for an I/O unit failed.
index_invalid_error
indicates that column
was invalid for
the given line
. open_failure
indicates that an open
statement
failed. read_only_error
indicates that an output unit did not have a
"write"
or "readwrite"
action. non_sequential_error
indicates
that the unit did not have sequential
access. unformatted_in_error
indicates that the unit did not have a form
of "formatted"
.
unopened_in_error
indicates that the unit was not opened. write_failure
indicates that at least one of the writes to log_units
failed.
public constants used as error flags
Variable of type logger_type
to be used as a global logger
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | all_level | = | -10+min(debug_level, information_level, warning_level, error_level, io_error_level, text_error_level) | |
integer, | public, | parameter | :: | close_failure | = | 1 | |
integer, | public, | parameter | :: | debug_level | = | 10 | |
integer, | public, | parameter | :: | error_level | = | 40 | |
type(logger_type), | public | :: | global_logger | ||||
integer, | public, | parameter | :: | index_invalid_error | = | 2 | |
integer, | public, | parameter | :: | information_level | = | 20 | |
integer, | public, | parameter | :: | io_error_level | = | 40 | |
integer, | public, | parameter | :: | non_sequential_error | = | 3 | |
integer, | public, | parameter | :: | none_level | = | 10+max(debug_level, information_level, warning_level, error_level, io_error_level, text_error_level) | |
integer, | public, | parameter | :: | open_failure | = | 4 | |
integer, | public, | parameter | :: | read_only_error | = | 5 | |
integer, | public, | parameter | :: | success | = | 0 | |
integer, | public, | parameter | :: | text_error_level | = | 50 | |
integer, | public, | parameter | :: | unformatted_in_error | = | 6 | |
integer, | public, | parameter | :: | unopened_in_error | = | 7 | |
integer, | public, | parameter | :: | warning_level | = | 30 | |
integer, | public, | parameter | :: | write_failure | = | 8 |
Public derived type (Specification)
final :: final_logger |
procedure, public, pass(self) :: add_log_file | |
procedure, public, pass(self) :: add_log_unit | |
procedure, public, pass(self) :: configuration | |
procedure, public, pass(self) :: configure | |
procedure, public, pass(self) :: log_debug | |
procedure, public, pass(self) :: log_error | |
procedure, public, pass(self) :: log_information | |
procedure, public, pass(self) :: log_io_error | |
procedure, public, pass(self) :: log_message | |
procedure, public, pass(self) :: log_text_error | |
procedure, public, pass(self) :: log_units_assigned | |
procedure, public, pass(self) :: log_warning | |
procedure, public, pass(self) :: remove_log_unit |