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 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/TOOLS/SIREN/src/logger.f90 – NEMO

Ignore:
Timestamp:
2015-12-03T09:10:32+01:00 (8 years ago)
Author:
deazer
Message:

Merging TMB and 25h diagnostics to head of trunk
added brief documentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/TOOLS/SIREN/src/logger.f90

    r5260 r5989  
    1616!> but not necessarily "wrong".  
    1717!>    - error : Other runtime errors or unexpected conditions. 
    18 !>    - fatal : Severe errors that cause premature termination.<br /> 
     18!>    - fatal : Severe errors that cause premature termination. 
    1919!>  default verbosity is warning 
     20!>    - none  : to not create and write any information in logger file.<br /> 
    2021! 
    2122!> If total number of error exceeded maximum number  
     
    2425!> to open/create logger file:<br/> 
    2526!> @code 
    26 !>    CALL logger_open(cd_file, [cd_verbosity,] [id_loggerid,] [id_maxerror]) 
     27!>    CALL logger_open(cd_file, [cd_verbosity,] [id_maxerror,] [id_loggerid]) 
    2728!> @endcode 
    2829!> - cd_file is logger file name 
     
    120121!> J.Paul 
    121122! REVISION HISTORY: 
    122 !> @date November, 2013- Initial Version 
     123!> @date November, 2013 - Initial Version 
     124!> @date February, 2015 
     125!> - check verbosity validity 
     126!> - add 'none' verbosity level to not used logger file 
    123127!> 
    124128!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    151155 
    152156   PRIVATE :: logger__write     ! cut message to get maximum of 80 character by line in log file 
     157   PRIVATE :: logger__check_verb! check verbosity validity 
    153158 
    154159   TYPE TLOGGER   !< logger structure 
    155160      INTEGER(i4)       :: i_id = 0                 !< log file id 
     161      LOGICAL           :: l_use=.TRUE.             !< use logger or not 
    156162      CHARACTER(LEN=lc) :: c_name                   !< log file name 
    157163      CHARACTER(LEN=lc) :: c_verbosity = "warning"  !< verbosity choose 
     
    163169 
    164170   !  module variable 
    165    INTEGER(i4), PARAMETER :: im_nverbosity=6     !< number of log level 
     171   INTEGER(i4), PARAMETER :: im_nverbosity=7     !< number of log level 
    166172   CHARACTER(len=*), DIMENSION(im_nverbosity), PARAMETER :: cm_verbosity= & !< verbosity array  
    167173   &               (/ 'trace   ',& 
     
    170176   &                  'warning ',& 
    171177   &                  'error   ',& 
    172    &                  'fatal   '/) 
     178   &                  'fatal   ',& 
     179   &                  'none    '/) 
    173180 
    174181   TYPE(TLOGGER), SAVE :: tm_logger      !< logger structure 
     
    184191   !> 
    185192   !> @author J.Paul 
    186    !> - November, 2013- Initial Version 
     193   !> @date November, 2013 - Initial Version 
    187194   ! 
    188195   !> @param[in] cd_file      log file name 
    189196   !> @param[in] cd_verbosity log file verbosity 
     197   !> @param[in] id_maxerror  maximum number of error 
    190198   !> @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) 
     199   !------------------------------------------------------------------- 
     200   SUBROUTINE logger_open(cd_file, cd_verbosity, id_maxerror, id_logid) 
    194201      IMPLICIT NONE 
    195202      ! Argument 
    196203      CHARACTER(len=*), INTENT(IN) :: cd_file                ! log file name 
    197204      CHARACTER(len=*), INTENT(IN), OPTIONAL :: cd_verbosity ! log file verbosity 
     205      INTEGER(i4),      INTENT(IN), OPTIONAL :: id_maxerror  ! log max error 
    198206      INTEGER(i4),      INTENT(IN), OPTIONAL :: id_logid     ! log file id 
    199       INTEGER(i4),      INTENT(IN), OPTIONAL :: id_maxerror  ! log max error 
    200207 
    201208      ! local variable 
    202209      INTEGER(i4) :: il_status 
    203210 
     211      LOGICAL     :: ll_valid 
     212 
    204213      ! loop 
    205214      INTEGER(i4) :: ji 
    206215      !---------------------------------------------------------------- 
    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)) 
    225216 
    226217      ! if present, change verbosity value 
    227218      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 
     219         ll_valid=logger__check_verb(TRIM(ADJUSTL(cd_verbosity))) 
     220         IF( ll_valid )THEN 
     221            tm_logger%c_verbosity=TRIM(ADJUSTL(cd_verbosity)) 
     222         ENDIF 
     223      ENDIF 
     224 
     225      IF( TRIM(tm_logger%c_verbosity) == 'none' ) tm_logger%l_use=.FALSE. 
     226       
     227      IF( tm_logger%l_use )THEN 
     228 
     229         ! get id if not already define 
     230         IF( PRESENT(id_logid) )THEN 
     231            tm_logger%i_id=id_logid 
     232         ELSE 
     233            tm_logger%i_id=fct_getunit() 
     234         ENDIF 
     235 
     236         ! open log file 
     237         OPEN( tm_logger%i_id, & 
     238         &     STATUS="unknown",    & 
     239         &     FILE=TRIM(ADJUSTL(cd_file)),  & 
     240         &     ACTION="write",      & 
     241         &     POSITION="append",   & 
     242         &     IOSTAT=il_status) 
     243         CALL fct_err(il_status) 
     244 
     245         ! keep filename 
     246         tm_logger%c_name=TRIM(ADJUSTL(cd_file)) 
     247 
     248         ! compute "tab" of verbosity to be used 
     249         IF( TRIM(ADJUSTL(tm_logger%c_verb)) == "" )THEN 
     250            DO ji=im_nverbosity,1,-1 
     251               tm_logger%c_verb = & 
     252               &  TRIM(tm_logger%c_verb)//" "//TRIM(ADJUSTL(cm_verbosity(ji))) 
     253               IF( TRIM(tm_logger%c_verbosity) == TRIM(cm_verbosity(ji)) )THEN 
     254                  EXIT 
     255               ENDIF 
     256            ENDDO 
     257         ENDIF 
     258 
     259         IF( PRESENT(id_maxerror) )THEN 
     260            tm_logger%i_maxerror=id_maxerror 
     261         ENDIF 
     262 
    244263      ENDIF 
    245264 
     
    249268   !> 
    250269   !> @author J.Paul 
    251    !> - November, 2013- Initial Version 
     270   !> @date November, 2013 - Initial Version 
    252271   !------------------------------------------------------------------- 
    253272   SUBROUTINE logger_close() 
     
    256275      INTEGER(i4) :: il_status 
    257276      !---------------------------------------------------------------- 
    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') 
     277      IF( tm_logger%l_use )THEN 
     278         IF( tm_logger%i_id /= 0 )THEN 
     279            tm_logger%i_id = 0 
     280            CLOSE( tm_logger%i_id, & 
     281            &      IOSTAT=il_status)       
     282            CALL fct_err(il_status) 
     283         ELSE 
     284             CALL logger_open('logger.log') 
     285             CALL logger_header() 
     286             CALL logger_fatal('you must have create logger to use logger_close') 
     287         ENDIF 
    267288      ENDIF 
    268289 
     
    272293   !> 
    273294   !> @author J.Paul 
    274    !> - November, 2013- Initial Version 
     295   !> @date November, 2013 - Initial Version 
    275296   !------------------------------------------------------------------- 
    276297   SUBROUTINE logger_flush() 
    277298      IMPLICIT NONE 
    278299      !---------------------------------------------------------------- 
    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') 
     300      IF( tm_logger%l_use )THEN 
     301         IF( tm_logger%i_id /= 0 )THEN 
     302            CALL logger_close() 
     303            CALL logger_open( tm_logger%c_name, tm_logger%c_verbosity, & 
     304            &                 tm_logger%i_maxerror, tm_logger%i_id )      
     305         ELSE 
     306             CALL logger_open('logger.log') 
     307             CALL logger_header() 
     308             CALL logger_fatal('you must have create logger to use logger_flush') 
     309         ENDIF 
    287310      ENDIF 
    288311 
     
    292315   !> 
    293316   !> @author J.Paul 
    294    !> - November, 2013- Initial Version 
     317   !> @date November, 2013 - Initial Version 
    295318   !------------------------------------------------------------------- 
    296319   RECURSIVE SUBROUTINE logger_header() 
     
    299322      INTEGER(i4)       :: il_status 
    300323      !---------------------------------------------------------------- 
    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') 
     324      IF( tm_logger%l_use )THEN 
     325         IF( tm_logger%i_id /= 0 )THEN 
     326            WRITE( tm_logger%i_id,    & 
     327               &   FMT='(4(a/))',     & 
     328               &   IOSTAT=il_status ) & 
     329               &   "--------------------------------------------------",& 
     330               &   "INIT     : verbosity "//TRIM(tm_logger%c_verbosity),& 
     331               &   "INIT     : max error "//TRIM(fct_str(tm_logger%i_maxerror)), & 
     332               &   "--------------------------------------------------" 
     333            CALL fct_err(il_status) 
     334         ELSE 
     335             CALL logger_open('logger.log') 
     336             CALL logger_header() 
     337             CALL logger_fatal('you must have create logger to use logger_header') 
     338         ENDIF 
    314339      ENDIF 
    315340 
     
    319344   !> 
    320345   !> @author J.Paul 
    321    !> - November, 2013- Initial Version 
     346   !> @date November, 2013 - Initial Version 
    322347   !------------------------------------------------------------------- 
    323348   SUBROUTINE logger_footer() 
     
    326351      INTEGER(i4)       :: il_status 
    327352      !---------------------------------------------------------------- 
    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') 
     353      IF( tm_logger%l_use )THEN 
     354         IF( tm_logger%i_id /= 0 )THEN 
     355            WRITE( tm_logger%i_id,    & 
     356               &   FMT='(4(/a))',     & 
     357               &   IOSTAT=il_status ) & 
     358               &   "--------------------------------------------------",& 
     359               &   "END      : log ended ",              & 
     360               &   "END      : "//TRIM(fct_str(tm_logger%i_nerror))//   & 
     361               &   " ERROR detected ",                                  & 
     362               &   "END      : "//TRIM(fct_str(tm_logger%i_nfatal))//   & 
     363               &   " FATAL detected ",                                  & 
     364               &   "--------------------------------------------------" 
     365            CALL fct_err(il_status) 
     366         ELSE 
     367             CALL logger_open('logger.log') 
     368             CALL logger_header() 
     369             CALL logger_fatal('you must have create logger to use logger_footer') 
     370         ENDIF 
    344371      ENDIF 
    345372   END SUBROUTINE logger_footer 
     
    350377   !> 
    351378   !> @author J.Paul 
    352    !> - November, 2013- Initial Version 
     379   !> @date November, 2013 - Initial Version 
    353380   ! 
    354381   !> @param[in] cd_msg    message to write 
     
    361388      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    362389      !---------------------------------------------------------------- 
    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') 
     390      IF( tm_logger%l_use )THEN 
     391         IF( tm_logger%i_id /= 0 )THEN 
     392            IF( INDEX(TRIM(tm_logger%c_verb),'trace')/=0 )THEN 
     393 
     394               CALL logger__write("TRACE   :",cd_msg) 
     395 
     396               IF( PRESENT(ld_flush) )THEN 
     397                  IF( ld_flush )THEN 
     398                     CALL logger_flush() 
     399                  ENDIF 
     400               ENDIF       
     401            ENDIF 
     402         ELSE 
     403             CALL logger_open('logger.log') 
     404             CALL logger_header() 
     405             CALL logger_fatal('you must have create logger to use logger_trace') 
     406         ENDIF 
    378407      ENDIF 
    379408   END SUBROUTINE logger_trace 
     
    384413   !> 
    385414   !> @author J.Paul 
    386    !> - November, 2013- Initial Version 
     415   !> @date November, 2013 - Initial Version 
    387416   ! 
    388417   !> @param[in] cd_msg    message to write 
     
    395424      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    396425      !---------------------------------------------------------------- 
    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') 
     426      IF( tm_logger%l_use )THEN 
     427         IF( tm_logger%i_id /= 0 )THEN 
     428            IF( INDEX(TRIM(tm_logger%c_verb),'debug')/=0 )THEN 
     429 
     430               CALL logger__write("DEBUG   :",cd_msg) 
     431 
     432               IF( PRESENT(ld_flush) )THEN 
     433                  IF( ld_flush )THEN 
     434                     CALL logger_flush() 
     435                  ENDIF 
     436               ENDIF       
     437            ENDIF 
     438         ELSE 
     439             CALL logger_open('logger.log') 
     440             CALL logger_header() 
     441             CALL logger_fatal('you must have create logger to use logger_debug') 
     442         ENDIF 
    412443      ENDIF 
    413444   END SUBROUTINE logger_debug 
     
    418449   !> 
    419450   !> @author J.Paul 
    420    !> - November, 2013- Initial Version 
     451   !> @date November, 2013 - Initial Version 
    421452   ! 
    422453   !> @param[in] cd_msg    message to write 
     
    429460      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    430461      !---------------------------------------------------------------- 
    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') 
     462      IF( tm_logger%l_use )THEN 
     463         IF( tm_logger%i_id /= 0 )THEN 
     464            IF( INDEX(TRIM(tm_logger%c_verb),'info')/=0 )THEN 
     465 
     466               CALL logger__write("INFO    :",cd_msg) 
     467 
     468               IF( PRESENT(ld_flush) )THEN 
     469                  IF( ld_flush )THEN 
     470                     CALL logger_flush() 
     471                  ENDIF 
     472               ENDIF       
     473            ENDIF 
     474         ELSE 
     475             CALL logger_open('logger.log') 
     476             CALL logger_header() 
     477             CALL logger_fatal('you must have create logger to use logger_info') 
     478         ENDIF 
    446479      ENDIF 
    447480   END SUBROUTINE logger_info 
     
    452485   !> 
    453486   !> @author J.Paul 
    454    !> - November, 2013- Initial Version 
     487   !> @date November, 2013 - Initial Version 
    455488   ! 
    456489   !> @param[in] cd_msg    message to write 
     
    463496      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    464497      !---------------------------------------------------------------- 
    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') 
     498      IF( tm_logger%l_use )THEN 
     499         IF( tm_logger%i_id /= 0 )THEN 
     500            IF( INDEX(TRIM(tm_logger%c_verb),'warn')/=0 )THEN 
     501 
     502               CALL logger__write("WARNING :",cd_msg) 
     503 
     504               IF( PRESENT(ld_flush) )THEN 
     505                  IF( ld_flush )THEN 
     506                     CALL logger_flush() 
     507                  ENDIF 
     508               ENDIF       
     509            ENDIF 
     510         ELSE 
     511             CALL logger_open('logger.log') 
     512             CALL logger_header() 
     513             CALL logger_fatal('you must have create logger to use logger_warn') 
     514         ENDIF 
    480515      ENDIF 
    481516   END SUBROUTINE logger_warn 
     
    486521   !> 
    487522   !> @author J.Paul 
    488    !> - November, 2013- Initial Version 
     523   !> @date November, 2013 - Initial Version 
    489524   ! 
    490525   !> @param[in] cd_msg    message to write 
     
    500535      CHARACTER(LEN=lc) :: cl_nerror 
    501536      !---------------------------------------------------------------- 
    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  
     537      IF( tm_logger%l_use )THEN 
     538         IF( tm_logger%i_id /= 0 )THEN 
     539            IF( TRIM(tm_logger%c_verb) /= 'none' )THEN 
     540               ! increment the error number 
     541               tm_logger%i_nerror=tm_logger%i_nerror+1 
     542            ENDIF 
     543 
     544            IF( INDEX(TRIM(tm_logger%c_verb),'error')/=0 )THEN 
     545 
     546               CALL logger__write("ERROR   :",cd_msg) 
     547 
     548               IF( PRESENT(ld_flush) )THEN 
     549                  IF( ld_flush )THEN 
     550                     CALL logger_flush() 
     551                  ENDIF 
     552               ENDIF       
     553            ENDIF 
     554 
     555            IF( tm_logger%i_nerror >= tm_logger%i_maxerror )THEN 
     556               WRITE(cl_nerror,*) tm_logger%i_maxerror 
     557               CALL logger_fatal(& 
     558               &  'Error count reached limit of '//TRIM(ADJUSTL(cl_nerror)) ) 
     559            ENDIF 
     560         ELSE 
     561             CALL logger_open('logger.log') 
     562             CALL logger_header() 
     563             CALL logger_fatal('you must have create logger to use logger_error') 
     564         ENDIF 
     565      ENDIF 
    528566   END SUBROUTINE logger_error 
    529567   !------------------------------------------------------------------- 
     
    532570   !> 
    533571   !> @author J.Paul 
    534    !> - November, 2013- Initial Version 
     572   !> @date November, 2013 - Initial Version 
    535573   ! 
    536574   !> @param[in] cd_msg message to write 
     
    541579      CHARACTER(LEN=*),           INTENT(IN) :: cd_msg 
    542580      !---------------------------------------------------------------- 
    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 
    555          ENDIF 
    556       ELSE 
    557           CALL logger_open('logger.log') 
    558           CALL logger_header() 
    559           CALL logger_fatal('you must have create logger to use logger_fatal') 
     581      IF( tm_logger%l_use )THEN 
     582         IF( tm_logger%i_id /= 0 )THEN 
     583            IF( INDEX(TRIM(tm_logger%c_verb),'fatal')/=0 )THEN 
     584               ! increment the error number 
     585               tm_logger%i_nfatal=tm_logger%i_nfatal+1 
     586 
     587               CALL logger__write("FATAL   :",cd_msg) 
     588 
     589               CALL logger_footer() 
     590               CALL logger_close() 
     591 
     592               WRITE(*,*) 'FATAL ERROR' 
     593               STOP 
     594            ENDIF 
     595         ELSE 
     596             CALL logger_open('logger.log') 
     597             CALL logger_header() 
     598             CALL logger_fatal('you must have create logger to use logger_fatal') 
     599         ENDIF 
    560600      ENDIF 
    561601   END SUBROUTINE logger_fatal 
     
    565605   !> 
    566606   !> @author J.Paul 
    567    !> - November, 2013- Initial Version 
     607   !> @date November, 2013 - Initial Version 
    568608   ! 
    569609   !> @param[in] cd_verb   verbosity of the message to write 
     
    615655 
    616656   END SUBROUTINE logger__write 
     657   !------------------------------------------------------------------- 
     658   !> @brief This function check validity of verbosity. 
     659   !> 
     660   !> @author J.Paul 
     661   !> @date February, 2015 - Initial Version 
     662   ! 
     663   !> @param[in] cd_verb   verbosity of the message to write 
     664   !> @return verbosity is valid or not 
     665   !------------------------------------------------------------------- 
     666   FUNCTION logger__check_verb(cd_verb) 
     667      IMPLICIT NONE 
     668      ! Argument 
     669      CHARACTER(LEN=*),           INTENT(IN) :: cd_verb 
     670 
     671      !function 
     672      LOGICAL           :: logger__check_verb 
     673 
     674      ! local variable 
     675      ! loop indices 
     676      INTEGER(i4) :: ji 
     677 
     678      !---------------------------------------------------------------- 
     679      logger__check_verb=.FALSE. 
     680 
     681      DO ji=1,im_nverbosity 
     682         IF( TRIM(cd_verb) == TRIM(cm_verbosity(ji)) )THEN 
     683            logger__check_verb=.TRUE. 
     684            EXIT 
     685         ENDIF 
     686      ENDDO 
     687 
     688      IF( .NOT. logger__check_verb )THEN 
     689         CALL logger_open('logger.log') 
     690         CALL logger_header() 
     691         CALL logger_fatal('LOGGER : invalid verbosity, check namelist.'//& 
     692         &                 ' default one will be used.') 
     693         CALL logger_footer() 
     694      ENDIF 
     695   END FUNCTION logger__check_verb 
    617696END MODULE logger 
    618697 
Note: See TracChangeset for help on using the changeset viewer.