source: dynamico_lmdz/simple_physics/phyparam/physics/logging.F90 @ 4200

Last change on this file since 4200 was 4199, checked in by dubos, 6 years ago

simple_physics : cleanup radiative transfer

File size: 1.3 KB
Line 
1MODULE logging
2
3  ! see also logging.h
4  ! macro LOGBUF accumulates log output into logging_buffer
5  ! flush_plugin points to a procedure pointer that typically prints all lines in the buffer and prepends tags
6  ! This module provides a default implementation of flush_plugin but the top-level driver is welcome to override it.
7
8  IMPLICIT NONE
9  SAVE
10  PRIVATE
11
12  INTERFACE
13     SUBROUTINE plugin(lev, tag, buf)
14       INTEGER, INTENT(IN) :: lev
15       CHARACTER(*), INTENT(IN) :: tag, buf(:)
16     END SUBROUTINE plugin
17  END INTERFACE
18
19  PROCEDURE(plugin), POINTER :: flush_plugin => default_flush_plugin
20
21  INTEGER, PARAMETER :: bufsize=10000
22  CHARACTER(bufsize) :: logging_buf(100)
23
24  INTEGER :: logging_lineno=0
25
26  INTEGER, PARAMETER, PUBLIC :: log_level_dbg=0, log_level_info=1
27
28  PUBLIC :: logging_buf, logging_lineno, flush_log, flush_plugin
29
30CONTAINS
31
32  SUBROUTINE flush_log(lev,tag)
33    INTEGER, INTENT(IN) :: lev
34    CHARACTER(*), INTENT(IN) :: tag
35    CALL flush_plugin(lev, TRIM(tag), logging_buf(1:logging_lineno))
36    logging_lineno=0
37  END SUBROUTINE flush_log
38
39  SUBROUTINE default_flush_plugin(lev, tag, buf)
40    INTEGER, INTENT(IN) :: lev
41    CHARACTER(*), INTENT(IN) :: tag, buf(:)
42    INTEGER :: i
43    DO i=1, SIZE(buf)
44       PRINT *, '[INFO ',tag,']', TRIM(buf(i))
45    END DO
46  END SUBROUTINE default_flush_plugin
47 
48END MODULE logging
Note: See TracBrowser for help on using the repository browser.