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 |