New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7261 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/TOOLS/SIREN/src/logger.f90 – NEMO

Ignore:
Timestamp:
2016-11-18T09:34:22+01:00 (7 years ago)
Author:
cbricaud
Message:

phaze the rest of NEMOGCM directory ( all except NEMO directory) of the CRS branch with nemo_v3_6_STABLE branch at rev 7213 (09-09-2016) (merge -r 5519:7213 )

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/TOOLS/SIREN/src/logger.f90

    r5602 r7261  
    66! 
    77! DESCRIPTION: 
    8 !> @brief This module create logger file and allow to fill it depending of verbosity. 
     8!> @brief This module manage log file. 
    99!> @details 
     10!> This module create log file and fill it depending of verbosity. 
     11!> 
    1012!> verbosity could be choosen between : 
    1113!>    - trace : Most detailed information. 
     
    1618!> but not necessarily "wrong".  
    1719!>    - error : Other runtime errors or unexpected conditions. 
    18 !>    - fatal : Severe errors that cause premature termination.<br /> 
    19 !>  default verbosity is warning 
    20 ! 
     20!>    - fatal : Severe errors that cause premature termination. 
     21!>    - none  : to not create and write any information in logger file.<br /> 
     22!>       @warn in this case only FATAL ERROR will be detected.<br /> 
     23!> 
     24!> @note default verbosity is warning 
     25!> 
    2126!> If total number of error exceeded maximum number  
    2227!> authorized, program stop. 
     
    2429!> to open/create logger file:<br/> 
    2530!> @code 
    26 !>    CALL logger_open(cd_file, [cd_verbosity,] [id_loggerid,] [id_maxerror]) 
     31!>    CALL logger_open(cd_file, [cd_verbosity,] [id_maxerror,] [id_loggerid]) 
    2732!> @endcode 
    2833!> - cd_file is logger file name 
     
    3439!> @code 
    3540!> CALL logger_close() 
     41!> @endcode 
     42!> 
     43!> to clean logger file:<br/> 
     44!> @code 
     45!> CALL logger_clean() 
    3646!> @endcode 
    3747!> 
     
    103113!>   CALL logger_footer() 
    104114!>   CALL logger_close() 
     115!>   CALL logger_clean() 
    105116!> @endcode 
    106117!> 
     
    115126!>   CALL logger_footer() 
    116127!>   CALL logger_close() 
     128!>   CALL logger_clean() 
    117129!> @endcode 
    118130! 
     
    120132!> J.Paul 
    121133! REVISION HISTORY: 
    122 !> @date November, 2013- Initial Version 
     134!> @date November, 2013 - Initial Version 
     135!> @date February, 2015 
     136!> - check verbosity validity 
     137!> - add 'none' verbosity level to not used logger file 
     138!> @date January, 2016 
     139!> - add logger_clean subroutine 
    123140!> 
    124141!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    140157   PUBLIC :: logger_open        !< create a log file with given verbosity 
    141158   PUBLIC :: logger_close       !< close log file 
     159   PUBLIC :: logger_clean       !< clean log structure 
    142160   PUBLIC :: logger_header      !< write header on log file 
    143161   PUBLIC :: logger_footer      !< write footer on log file 
     
    151169 
    152170   PRIVATE :: logger__write     ! cut message to get maximum of 80 character by line in log file 
     171   PRIVATE :: logger__check_verb! check verbosity validity 
    153172 
    154173   TYPE TLOGGER   !< logger structure 
    155174      INTEGER(i4)       :: i_id = 0                 !< log file id 
     175      LOGICAL           :: l_use=.TRUE.             !< use logger or not 
    156176      CHARACTER(LEN=lc) :: c_name                   !< log file name 
    157177      CHARACTER(LEN=lc) :: c_verbosity = "warning"  !< verbosity choose 
     
    163183 
    164184   !  module variable 
    165    INTEGER(i4), PARAMETER :: im_nverbosity=6     !< number of log level 
     185   INTEGER(i4), PARAMETER :: im_nverbosity=7     !< number of log level 
    166186   CHARACTER(len=*), DIMENSION(im_nverbosity), PARAMETER :: cm_verbosity= & !< verbosity array  
    167187   &               (/ 'trace   ',& 
     
    170190   &                  'warning ',& 
    171191   &                  'error   ',& 
    172    &                  'fatal   '/) 
     192   &                  'fatal   ',& 
     193   &                  'none    '/) 
    173194 
    174195   TYPE(TLOGGER), SAVE :: tm_logger      !< logger structure 
     
    184205   !> 
    185206   !> @author J.Paul 
    186    !> - November, 2013- Initial Version 
     207   !> @date November, 2013 - Initial Version 
    187208   ! 
    188209   !> @param[in] cd_file      log file name 
    189210   !> @param[in] cd_verbosity log file verbosity 
     211   !> @param[in] id_maxerror  maximum number of error 
    190212   !> @param[in] id_logid     log file id (use to flush) 
    191    !> @param[in] id_maxerror  maximum number of error 
    192    !------------------------------------------------------------------- 
    193    SUBROUTINE logger_open(cd_file, cd_verbosity, id_logid, id_maxerror) 
     213   !------------------------------------------------------------------- 
     214   SUBROUTINE logger_open(cd_file, cd_verbosity, id_maxerror, id_logid) 
    194215      IMPLICIT NONE 
    195216      ! Argument 
    196217      CHARACTER(len=*), INTENT(IN) :: cd_file                ! log file name 
    197218      CHARACTER(len=*), INTENT(IN), OPTIONAL :: cd_verbosity ! log file verbosity 
     219      INTEGER(i4),      INTENT(IN), OPTIONAL :: id_maxerror  ! log max error 
    198220      INTEGER(i4),      INTENT(IN), OPTIONAL :: id_logid     ! log file id 
    199       INTEGER(i4),      INTENT(IN), OPTIONAL :: id_maxerror  ! log max error 
    200221 
    201222      ! local variable 
    202223      INTEGER(i4) :: il_status 
    203224 
     225      LOGICAL     :: ll_valid 
     226 
    204227      ! loop 
    205228      INTEGER(i4) :: ji 
    206229      !---------------------------------------------------------------- 
    207       ! get id if not already define 
    208       IF( PRESENT(id_logid) )THEN 
    209          tm_logger%i_id=id_logid 
    210       ELSE 
    211          tm_logger%i_id=fct_getunit() 
    212       ENDIF 
    213  
    214       ! open log file 
    215       OPEN( tm_logger%i_id, & 
    216       &     STATUS="unknown",    & 
    217       &     FILE=TRIM(ADJUSTL(cd_file)),  & 
    218       &     ACTION="write",      & 
    219       &     POSITION="append",   & 
    220       &     IOSTAT=il_status) 
    221       CALL fct_err(il_status) 
    222  
    223       ! keep filename 
    224       tm_logger%c_name=TRIM(ADJUSTL(cd_file)) 
    225230 
    226231      ! if present, change verbosity value 
    227232      IF( PRESENT(cd_verbosity) )THEN 
    228          tm_logger%c_verbosity=TRIM(ADJUSTL(cd_verbosity)) 
    229       ENDIF 
    230  
    231       ! compute "tab" of verbosity to be used 
    232       IF( TRIM(ADJUSTL(tm_logger%c_verb)) == "" )THEN 
    233          DO ji=im_nverbosity,1,-1 
    234             tm_logger%c_verb = & 
    235             &  TRIM(tm_logger%c_verb)//" "//TRIM(ADJUSTL(cm_verbosity(ji))) 
    236             IF( TRIM(tm_logger%c_verbosity) == TRIM(cm_verbosity(ji)) )THEN 
    237                EXIT 
    238             ENDIF 
    239          ENDDO 
    240       ENDIF 
    241  
    242       IF( PRESENT(id_maxerror) )THEN 
    243          tm_logger%i_maxerror=id_maxerror 
     233         ll_valid=logger__check_verb(TRIM(ADJUSTL(cd_verbosity))) 
     234         IF( ll_valid )THEN 
     235            tm_logger%c_verbosity=TRIM(ADJUSTL(cd_verbosity)) 
     236         ENDIF 
     237      ENDIF 
     238 
     239      IF( TRIM(tm_logger%c_verbosity) == 'none' ) tm_logger%l_use=.FALSE. 
     240       
     241      IF( tm_logger%l_use )THEN 
     242 
     243         ! get id if not already define 
     244         IF( PRESENT(id_logid) )THEN 
     245            tm_logger%i_id=id_logid 
     246         ELSE 
     247            tm_logger%i_id=fct_getunit() 
     248         ENDIF 
     249 
     250         ! open log file 
     251         OPEN( tm_logger%i_id, & 
     252         &     STATUS="unknown",    & 
     253         &     FILE=TRIM(ADJUSTL(cd_file)),  & 
     254         &     ACTION="write",      & 
     255         &     POSITION="append",   & 
     256         &     IOSTAT=il_status) 
     257         CALL fct_err(il_status) 
     258 
     259         ! keep filename 
     260         tm_logger%c_name=TRIM(ADJUSTL(cd_file)) 
     261 
     262         ! compute "tab" of verbosity to be used 
     263         IF( TRIM(ADJUSTL(tm_logger%c_verb)) == "" )THEN 
     264            DO ji=im_nverbosity,1,-1 
     265               tm_logger%c_verb = & 
     266               &  TRIM(tm_logger%c_verb)//" "//TRIM(ADJUSTL(cm_verbosity(ji))) 
     267               IF( TRIM(tm_logger%c_verbosity) == TRIM(cm_verbosity(ji)) )THEN 
     268                  EXIT 
     269               ENDIF 
     270            ENDDO 
     271         ENDIF 
     272 
     273         IF( PRESENT(id_maxerror) )THEN 
     274            tm_logger%i_maxerror=id_maxerror 
     275         ENDIF 
     276 
    244277      ENDIF 
    245278 
     
    249282   !> 
    250283   !> @author J.Paul 
    251    !> - November, 2013- Initial Version 
     284   !> @date November, 2013 - Initial Version 
    252285   !------------------------------------------------------------------- 
    253286   SUBROUTINE logger_close() 
    254287      IMPLICIT NONE 
    255288      ! local variable 
    256       INTEGER(i4) :: il_status 
    257       !---------------------------------------------------------------- 
    258       IF( tm_logger%i_id /= 0 )THEN 
    259          tm_logger%i_id = 0 
    260          CLOSE( tm_logger%i_id, & 
    261          &      IOSTAT=il_status)       
    262          CALL fct_err(il_status) 
    263       ELSE 
    264           CALL logger_open('logger.log') 
    265           CALL logger_header() 
    266           CALL logger_fatal('you must have create logger to use logger_close') 
     289      INTEGER(i4)   :: il_status 
     290      !---------------------------------------------------------------- 
     291      IF( tm_logger%l_use )THEN 
     292         IF( tm_logger%i_id /= 0 )THEN 
     293            !tm_logger%i_id = 0 
     294            CLOSE( tm_logger%i_id, & 
     295            &      IOSTAT=il_status)       
     296            CALL fct_err(il_status) 
     297         ELSE 
     298             CALL logger_open('logger.log') 
     299             CALL logger_header() 
     300             CALL logger_fatal('you must have create logger to use logger_close') 
     301         ENDIF 
    267302      ENDIF 
    268303 
    269304   END SUBROUTINE logger_close 
    270305   !------------------------------------------------------------------- 
     306   !> @brief This subroutine clean a log structure. 
     307   !> 
     308   !> @author J.Paul 
     309   !> @date January, 2016 - Initial Version 
     310   !------------------------------------------------------------------- 
     311   SUBROUTINE logger_clean() 
     312      IMPLICIT NONE 
     313      ! local variable 
     314      TYPE(TLOGGER) :: tl_logger 
     315      !---------------------------------------------------------------- 
     316      tm_logger = tl_logger 
     317 
     318   END SUBROUTINE logger_clean 
     319   !------------------------------------------------------------------- 
    271320   !> @brief This subroutine flushing output into log file. 
    272321   !> 
    273322   !> @author J.Paul 
    274    !> - November, 2013- Initial Version 
     323   !> @date November, 2013 - Initial Version 
    275324   !------------------------------------------------------------------- 
    276325   SUBROUTINE logger_flush() 
    277326      IMPLICIT NONE 
    278327      !---------------------------------------------------------------- 
    279       IF( tm_logger%i_id /= 0 )THEN 
    280          CALL logger_close() 
    281          CALL logger_open( tm_logger%c_name, tm_logger%c_verbosity, tm_logger%i_id, & 
    282          &              tm_logger%i_maxerror )      
    283       ELSE 
    284           CALL logger_open('logger.log') 
    285           CALL logger_header() 
    286           CALL logger_fatal('you must have create logger to use logger_flush') 
     328      IF( tm_logger%l_use )THEN 
     329         IF( tm_logger%i_id /= 0 )THEN 
     330            CALL logger_close() 
     331            CALL logger_open( tm_logger%c_name, tm_logger%c_verbosity, & 
     332            &                 tm_logger%i_maxerror, tm_logger%i_id )      
     333         ELSE 
     334             CALL logger_open('logger.log') 
     335             CALL logger_header() 
     336             CALL logger_fatal('you must have create logger to use logger_flush') 
     337         ENDIF 
    287338      ENDIF 
    288339 
     
    292343   !> 
    293344   !> @author J.Paul 
    294    !> - November, 2013- Initial Version 
     345   !> @date November, 2013 - Initial Version 
    295346   !------------------------------------------------------------------- 
    296347   RECURSIVE SUBROUTINE logger_header() 
     
    299350      INTEGER(i4)       :: il_status 
    300351      !---------------------------------------------------------------- 
    301       IF( tm_logger%i_id /= 0 )THEN 
    302          WRITE( tm_logger%i_id,    & 
    303             &   FMT='(4(a/))',     & 
    304             &   IOSTAT=il_status ) & 
    305             &   "--------------------------------------------------",& 
    306             &   "INIT     : verbosity "//TRIM(tm_logger%c_verbosity),& 
    307             &   "INIT     : max error "//TRIM(fct_str(tm_logger%i_maxerror)), & 
    308             &   "--------------------------------------------------" 
    309          CALL fct_err(il_status) 
    310       ELSE 
    311           CALL logger_open('logger.log') 
    312           CALL logger_header() 
    313           CALL logger_fatal('you must have create logger to use logger_header') 
     352      IF( tm_logger%l_use )THEN 
     353         IF( tm_logger%i_id /= 0 )THEN 
     354            WRITE( tm_logger%i_id,    & 
     355               &   FMT='(4(a/))',     & 
     356               &   IOSTAT=il_status ) & 
     357               &   "--------------------------------------------------",& 
     358               &   "INIT     : verbosity "//TRIM(tm_logger%c_verbosity),& 
     359               &   "INIT     : max error "//TRIM(fct_str(tm_logger%i_maxerror)), & 
     360               &   "--------------------------------------------------" 
     361            CALL fct_err(il_status) 
     362         ELSE 
     363             CALL logger_open('logger.log') 
     364             CALL logger_header() 
     365             CALL logger_fatal('you must have create logger to use logger_header') 
     366         ENDIF 
    314367      ENDIF 
    315368 
     
    319372   !> 
    320373   !> @author J.Paul 
    321    !> - November, 2013- Initial Version 
     374   !> @date November, 2013 - Initial Version 
    322375   !------------------------------------------------------------------- 
    323376   SUBROUTINE logger_footer() 
     
    326379      INTEGER(i4)       :: il_status 
    327380      !---------------------------------------------------------------- 
    328       IF( tm_logger%i_id /= 0 )THEN 
    329          WRITE( tm_logger%i_id,    & 
    330             &   FMT='(4(/a))',     & 
    331             &   IOSTAT=il_status ) & 
    332             &   "--------------------------------------------------",& 
    333             &   "END      : log ended ",              & 
    334             &   "END      : "//TRIM(fct_str(tm_logger%i_nerror))//   & 
    335             &   " ERROR detected ",                                  & 
    336             &   "END      : "//TRIM(fct_str(tm_logger%i_nfatal))//   & 
    337             &   " FATAL detected ",                                  & 
    338             &   "--------------------------------------------------" 
    339          CALL fct_err(il_status) 
    340       ELSE 
    341           CALL logger_open('logger.log') 
    342           CALL logger_header() 
    343           CALL logger_fatal('you must have create logger to use logger_footer') 
     381      IF( tm_logger%l_use )THEN 
     382         IF( tm_logger%i_id /= 0 )THEN 
     383            WRITE( tm_logger%i_id,    & 
     384               &   FMT='(4(/a))',     & 
     385               &   IOSTAT=il_status ) & 
     386               &   "--------------------------------------------------",& 
     387               &   "END      : log ended ",              & 
     388               &   "END      : "//TRIM(fct_str(tm_logger%i_nerror))//   & 
     389               &   " ERROR detected ",                                  & 
     390               &   "END      : "//TRIM(fct_str(tm_logger%i_nfatal))//   & 
     391               &   " FATAL detected ",                                  & 
     392               &   "--------------------------------------------------" 
     393            CALL fct_err(il_status) 
     394         ELSE 
     395             CALL logger_open('logger.log') 
     396             CALL logger_header() 
     397             CALL logger_fatal('you must have create logger to use logger_footer') 
     398         ENDIF 
    344399      ENDIF 
    345400   END SUBROUTINE logger_footer 
     
    350405   !> 
    351406   !> @author J.Paul 
    352    !> - November, 2013- Initial Version 
     407   !> @date November, 2013 - Initial Version 
    353408   ! 
    354409   !> @param[in] cd_msg    message to write 
     
    361416      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    362417      !---------------------------------------------------------------- 
    363       IF( tm_logger%i_id /= 0 )THEN 
    364          IF( INDEX(TRIM(tm_logger%c_verb),'trace')/=0 )THEN 
    365  
    366             CALL logger__write("TRACE   :",cd_msg) 
    367  
    368             IF( PRESENT(ld_flush) )THEN 
    369                IF( ld_flush )THEN 
    370                   CALL logger_flush() 
    371                ENDIF 
    372             ENDIF       
    373          ENDIF 
    374       ELSE 
    375           CALL logger_open('logger.log') 
    376           CALL logger_header() 
    377           CALL logger_fatal('you must have create logger to use logger_trace') 
     418      IF( tm_logger%l_use )THEN 
     419         IF( tm_logger%i_id /= 0 )THEN 
     420            IF( INDEX(TRIM(tm_logger%c_verb),'trace')/=0 )THEN 
     421 
     422               CALL logger__write("TRACE   :",cd_msg) 
     423 
     424               IF( PRESENT(ld_flush) )THEN 
     425                  IF( ld_flush )THEN 
     426                     CALL logger_flush() 
     427                  ENDIF 
     428               ENDIF       
     429            ENDIF 
     430         ELSE 
     431             CALL logger_open('logger.log') 
     432             CALL logger_header() 
     433             CALL logger_fatal('you must have create logger to use logger_trace') 
     434         ENDIF 
    378435      ENDIF 
    379436   END SUBROUTINE logger_trace 
     
    384441   !> 
    385442   !> @author J.Paul 
    386    !> - November, 2013- Initial Version 
     443   !> @date November, 2013 - Initial Version 
    387444   ! 
    388445   !> @param[in] cd_msg    message to write 
     
    395452      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    396453      !---------------------------------------------------------------- 
    397       IF( tm_logger%i_id /= 0 )THEN 
    398          IF( INDEX(TRIM(tm_logger%c_verb),'debug')/=0 )THEN 
    399  
    400             CALL logger__write("DEBUG   :",cd_msg) 
    401  
    402             IF( PRESENT(ld_flush) )THEN 
    403                IF( ld_flush )THEN 
    404                   CALL logger_flush() 
    405                ENDIF 
    406             ENDIF       
    407          ENDIF 
    408       ELSE 
    409           CALL logger_open('logger.log') 
    410           CALL logger_header() 
    411           CALL logger_fatal('you must have create logger to use logger_debug') 
     454      IF( tm_logger%l_use )THEN 
     455         IF( tm_logger%i_id /= 0 )THEN 
     456            IF( INDEX(TRIM(tm_logger%c_verb),'debug')/=0 )THEN 
     457 
     458               CALL logger__write("DEBUG   :",cd_msg) 
     459 
     460               IF( PRESENT(ld_flush) )THEN 
     461                  IF( ld_flush )THEN 
     462                     CALL logger_flush() 
     463                  ENDIF 
     464               ENDIF       
     465            ENDIF 
     466         ELSE 
     467             CALL logger_open('logger.log') 
     468             CALL logger_header() 
     469             CALL logger_fatal('you must have create logger to use logger_debug') 
     470         ENDIF 
    412471      ENDIF 
    413472   END SUBROUTINE logger_debug 
     
    418477   !> 
    419478   !> @author J.Paul 
    420    !> - November, 2013- Initial Version 
     479   !> @date November, 2013 - Initial Version 
    421480   ! 
    422481   !> @param[in] cd_msg    message to write 
     
    429488      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    430489      !---------------------------------------------------------------- 
    431       IF( tm_logger%i_id /= 0 )THEN 
    432          IF( INDEX(TRIM(tm_logger%c_verb),'info')/=0 )THEN 
    433  
    434             CALL logger__write("INFO    :",cd_msg) 
    435  
    436             IF( PRESENT(ld_flush) )THEN 
    437                IF( ld_flush )THEN 
    438                   CALL logger_flush() 
    439                ENDIF 
    440             ENDIF       
    441          ENDIF 
    442       ELSE 
    443           CALL logger_open('logger.log') 
    444           CALL logger_header() 
    445           CALL logger_fatal('you must have create logger to use logger_info') 
     490      IF( tm_logger%l_use )THEN 
     491         IF( tm_logger%i_id /= 0 )THEN 
     492            IF( INDEX(TRIM(tm_logger%c_verb),'info')/=0 )THEN 
     493 
     494               CALL logger__write("INFO    :",cd_msg) 
     495 
     496               IF( PRESENT(ld_flush) )THEN 
     497                  IF( ld_flush )THEN 
     498                     CALL logger_flush() 
     499                  ENDIF 
     500               ENDIF       
     501            ENDIF 
     502         ELSE 
     503             CALL logger_open('logger.log') 
     504             CALL logger_header() 
     505             CALL logger_fatal('you must have create logger to use logger_info') 
     506         ENDIF 
    446507      ENDIF 
    447508   END SUBROUTINE logger_info 
     
    452513   !> 
    453514   !> @author J.Paul 
    454    !> - November, 2013- Initial Version 
     515   !> @date November, 2013 - Initial Version 
    455516   ! 
    456517   !> @param[in] cd_msg    message to write 
     
    463524      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    464525      !---------------------------------------------------------------- 
    465       IF( tm_logger%i_id /= 0 )THEN 
    466          IF( INDEX(TRIM(tm_logger%c_verb),'warn')/=0 )THEN 
    467  
    468             CALL logger__write("WARNING :",cd_msg) 
    469  
    470             IF( PRESENT(ld_flush) )THEN 
    471                IF( ld_flush )THEN 
    472                   CALL logger_flush() 
    473                ENDIF 
    474             ENDIF       
    475          ENDIF 
    476       ELSE 
    477           CALL logger_open('logger.log') 
    478           CALL logger_header() 
    479           CALL logger_fatal('you must have create logger to use logger_warn') 
     526      IF( tm_logger%l_use )THEN 
     527         IF( tm_logger%i_id /= 0 )THEN 
     528            IF( INDEX(TRIM(tm_logger%c_verb),'warn')/=0 )THEN 
     529 
     530               CALL logger__write("WARNING :",cd_msg) 
     531 
     532               IF( PRESENT(ld_flush) )THEN 
     533                  IF( ld_flush )THEN 
     534                     CALL logger_flush() 
     535                  ENDIF 
     536               ENDIF       
     537            ENDIF 
     538         ELSE 
     539             CALL logger_open('logger.log') 
     540             CALL logger_header() 
     541             CALL logger_fatal('you must have create logger to use logger_warn') 
     542         ENDIF 
    480543      ENDIF 
    481544   END SUBROUTINE logger_warn 
     
    486549   !> 
    487550   !> @author J.Paul 
    488    !> - November, 2013- Initial Version 
     551   !> @date November, 2013 - Initial Version 
    489552   ! 
    490553   !> @param[in] cd_msg    message to write 
     
    500563      CHARACTER(LEN=lc) :: cl_nerror 
    501564      !---------------------------------------------------------------- 
    502       IF( tm_logger%i_id /= 0 )THEN 
    503          ! increment the error number 
    504          tm_logger%i_nerror=tm_logger%i_nerror+1 
    505  
    506          IF( INDEX(TRIM(tm_logger%c_verb),'error')/=0 )THEN 
    507  
    508             CALL logger__write("ERROR   :",cd_msg) 
    509  
    510             IF( PRESENT(ld_flush) )THEN 
    511                IF( ld_flush )THEN 
    512                   CALL logger_flush() 
    513                ENDIF 
    514             ENDIF       
    515          ENDIF 
    516  
    517          IF( tm_logger%i_nerror >= tm_logger%i_maxerror )THEN 
    518             WRITE(cl_nerror,*) tm_logger%i_maxerror 
    519             CALL logger_fatal(& 
    520             &  'Error count reached limit of '//TRIM(ADJUSTL(cl_nerror)) ) 
    521          ENDIF 
    522       ELSE 
    523           CALL logger_open('logger.log') 
    524           CALL logger_header() 
    525           CALL logger_fatal('you must have create logger to use logger_error') 
    526       ENDIF 
    527  
     565      IF( tm_logger%l_use )THEN 
     566         IF( tm_logger%i_id /= 0 )THEN 
     567            ! increment the error number 
     568            tm_logger%i_nerror=tm_logger%i_nerror+1 
     569 
     570            IF( INDEX(TRIM(tm_logger%c_verb),'error')/=0 )THEN 
     571 
     572               CALL logger__write("ERROR   :",cd_msg) 
     573 
     574               IF( PRESENT(ld_flush) )THEN 
     575                  IF( ld_flush )THEN 
     576                     CALL logger_flush() 
     577                  ENDIF 
     578               ENDIF       
     579            ENDIF 
     580 
     581            IF( tm_logger%i_nerror >= tm_logger%i_maxerror )THEN 
     582               WRITE(cl_nerror,*) tm_logger%i_maxerror 
     583               CALL logger_fatal(& 
     584               &  'Error count reached limit of '//TRIM(ADJUSTL(cl_nerror)) ) 
     585            ENDIF 
     586         ELSE 
     587             CALL logger_open('logger.log') 
     588             CALL logger_header() 
     589             CALL logger_fatal('you must have create logger to use logger_error') 
     590         ENDIF 
     591      ENDIF 
    528592   END SUBROUTINE logger_error 
    529593   !------------------------------------------------------------------- 
     
    532596   !> 
    533597   !> @author J.Paul 
    534    !> - November, 2013- Initial Version 
     598   !> @date November, 2013 - Initial Version 
     599   !> @date September, 2015 
     600   !> - stop program for FATAL ERROR if verbosity is none 
    535601   ! 
    536602   !> @param[in] cd_msg message to write 
     
    541607      CHARACTER(LEN=*),           INTENT(IN) :: cd_msg 
    542608      !---------------------------------------------------------------- 
    543       IF( tm_logger%i_id /= 0 )THEN 
    544          IF( INDEX(TRIM(tm_logger%c_verb),'fatal')/=0 )THEN 
    545             ! increment the error number 
    546             tm_logger%i_nfatal=tm_logger%i_nfatal+1 
    547  
    548             CALL logger__write("FATAL   :",cd_msg) 
    549  
    550             CALL logger_footer() 
    551             CALL logger_close() 
    552  
    553             WRITE(*,*) 'FATAL ERROR' 
    554             STOP 
     609      IF( tm_logger%l_use )THEN 
     610         IF( tm_logger%i_id /= 0 )THEN 
     611            IF( INDEX(TRIM(tm_logger%c_verb),'fatal')/=0 )THEN 
     612               ! increment the error number 
     613               tm_logger%i_nfatal=tm_logger%i_nfatal+1 
     614 
     615               CALL logger__write("FATAL   :",cd_msg) 
     616 
     617               CALL logger_footer() 
     618               CALL logger_close() 
     619 
     620               WRITE(*,*) 'FATAL ERROR' 
     621               STOP 
     622            ENDIF 
     623         ELSE 
     624             CALL logger_open('logger.log') 
     625             CALL logger_header() 
     626             CALL logger_fatal('you must have create logger to use logger_fatal') 
    555627         ENDIF 
    556628      ELSE 
    557           CALL logger_open('logger.log') 
    558           CALL logger_header() 
    559           CALL logger_fatal('you must have create logger to use logger_fatal') 
     629         PRINT *,"FATAL ERROR :"//TRIM(cd_msg) 
     630         STOP 
    560631      ENDIF 
    561632   END SUBROUTINE logger_fatal 
     
    565636   !> 
    566637   !> @author J.Paul 
    567    !> - November, 2013- Initial Version 
     638   !> @date November, 2013 - Initial Version 
    568639   ! 
    569640   !> @param[in] cd_verb   verbosity of the message to write 
     
    615686 
    616687   END SUBROUTINE logger__write 
     688   !------------------------------------------------------------------- 
     689   !> @brief This function check validity of verbosity. 
     690   !> 
     691   !> @author J.Paul 
     692   !> @date February, 2015 - Initial Version 
     693   ! 
     694   !> @param[in] cd_verb   verbosity of the message to write 
     695   !> @return verbosity is valid or not 
     696   !------------------------------------------------------------------- 
     697   FUNCTION logger__check_verb(cd_verb) 
     698      IMPLICIT NONE 
     699      ! Argument 
     700      CHARACTER(LEN=*),           INTENT(IN) :: cd_verb 
     701 
     702      !function 
     703      LOGICAL           :: logger__check_verb 
     704 
     705      ! local variable 
     706      ! loop indices 
     707      INTEGER(i4) :: ji 
     708 
     709      !---------------------------------------------------------------- 
     710      logger__check_verb=.FALSE. 
     711 
     712      DO ji=1,im_nverbosity 
     713         IF( TRIM(cd_verb) == TRIM(cm_verbosity(ji)) )THEN 
     714            logger__check_verb=.TRUE. 
     715            EXIT 
     716         ENDIF 
     717      ENDDO 
     718 
     719      IF( .NOT. logger__check_verb )THEN 
     720         CALL logger_open('logger.log') 
     721         CALL logger_header() 
     722         CALL logger_fatal('LOGGER : invalid verbosity, check namelist.'//& 
     723         &                 ' default one will be used.') 
     724         CALL logger_footer() 
     725      ENDIF 
     726   END FUNCTION logger__check_verb 
    617727END MODULE logger 
    618728 
Note: See TracChangeset for help on using the changeset viewer.