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 12080 for utils/tools/SIREN/src/logger.f90 – NEMO

Ignore:
Timestamp:
2019-12-06T10:30:14+01:00 (4 years ago)
Author:
jpaul
Message:

update nemo trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • utils/tools/SIREN/src/logger.f90

    r9598 r12080  
    22! NEMO system team, System and Interface for oceanic RElocable Nesting 
    33!---------------------------------------------------------------------- 
    4 ! 
    5 ! MODULE: logger 
    64! 
    75! DESCRIPTION: 
     
    128126!>   CALL logger_clean() 
    129127!> @endcode 
    130 ! 
     128!> 
    131129!> @author 
    132130!> J.Paul 
    133 ! REVISION HISTORY: 
     131!> 
    134132!> @date November, 2013 - Initial Version 
    135133!> @date February, 2015 
     
    139137!> - add logger_clean subroutine 
    140138!> 
    141 !> @note Software governed by the CeCILL licence     (./LICENSE) 
     139!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    142140!---------------------------------------------------------------------- 
    143141MODULE logger 
     142 
    144143   USE kind                            ! F90 kind parameter 
    145144   USE fct                             ! basic useful function 
     
    196195                                                  
    197196CONTAINS 
     197   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     198   SUBROUTINE logger_open(cd_file, cd_verbosity, id_maxerror, id_logid) 
    198199   !------------------------------------------------------------------- 
    199200   !> @brief This subroutine create a log file with default verbosity 
     
    206207   !> @author J.Paul 
    207208   !> @date November, 2013 - Initial Version 
    208    ! 
     209   !> 
    209210   !> @param[in] cd_file      log file name 
    210211   !> @param[in] cd_verbosity log file verbosity 
     
    212213   !> @param[in] id_logid     log file id (use to flush) 
    213214   !------------------------------------------------------------------- 
    214    SUBROUTINE logger_open(cd_file, cd_verbosity, id_maxerror, id_logid) 
    215       IMPLICIT NONE 
     215       
     216      IMPLICIT NONE 
     217 
    216218      ! Argument 
    217219      CHARACTER(len=*), INTENT(IN) :: cd_file                ! log file name 
     
    278280 
    279281   END SUBROUTINE logger_open 
     282   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     283   SUBROUTINE logger_close() 
    280284   !------------------------------------------------------------------- 
    281285   !> @brief This subroutine close a log file. 
     
    284288   !> @date November, 2013 - Initial Version 
    285289   !------------------------------------------------------------------- 
    286    SUBROUTINE logger_close() 
    287       IMPLICIT NONE 
     290       
     291      IMPLICIT NONE 
     292 
    288293      ! local variable 
    289294      INTEGER(i4)   :: il_status 
    290295      !---------------------------------------------------------------- 
     296 
    291297      IF( tm_logger%l_use )THEN 
    292298         IF( tm_logger%i_id /= 0 )THEN 
     
    303309 
    304310   END SUBROUTINE logger_close 
     311   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     312   SUBROUTINE logger_clean() 
    305313   !------------------------------------------------------------------- 
    306314   !> @brief This subroutine clean a log structure. 
     
    309317   !> @date January, 2016 - Initial Version 
    310318   !------------------------------------------------------------------- 
    311    SUBROUTINE logger_clean() 
    312       IMPLICIT NONE 
     319       
     320      IMPLICIT NONE 
     321 
    313322      ! local variable 
    314323      TYPE(TLOGGER) :: tl_logger 
    315324      !---------------------------------------------------------------- 
     325 
    316326      tm_logger = tl_logger 
    317327 
    318328   END SUBROUTINE logger_clean 
     329   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    319330   !------------------------------------------------------------------- 
    320331   !> @brief This subroutine flushing output into log file. 
     
    324335   !------------------------------------------------------------------- 
    325336   SUBROUTINE logger_flush() 
    326       IMPLICIT NONE 
    327       !---------------------------------------------------------------- 
     337 
     338      IMPLICIT NONE 
     339       
     340      !---------------------------------------------------------------- 
     341 
    328342      IF( tm_logger%l_use )THEN 
    329343         IF( tm_logger%i_id /= 0 )THEN 
     
    339353 
    340354   END SUBROUTINE logger_flush 
     355   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     356   RECURSIVE SUBROUTINE logger_header() 
    341357   !------------------------------------------------------------------- 
    342358   !> @brief This subroutine write header on log file. 
     
    345361   !> @date November, 2013 - Initial Version 
    346362   !------------------------------------------------------------------- 
    347    RECURSIVE SUBROUTINE logger_header() 
    348       IMPLICIT NONE 
     363       
     364      IMPLICIT NONE 
     365 
    349366      ! local variable 
    350367      INTEGER(i4)       :: il_status 
    351368      !---------------------------------------------------------------- 
     369 
    352370      IF( tm_logger%l_use )THEN 
    353371         IF( tm_logger%i_id /= 0 )THEN 
     
    368386 
    369387   END SUBROUTINE logger_header 
     388   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     389   SUBROUTINE logger_footer() 
    370390   !------------------------------------------------------------------- 
    371391   !> @brief This subroutine write footer on log file. 
     
    374394   !> @date November, 2013 - Initial Version 
    375395   !------------------------------------------------------------------- 
    376    SUBROUTINE logger_footer() 
    377       IMPLICIT NONE 
     396 
     397      IMPLICIT NONE 
     398 
    378399      ! local variable 
    379400      INTEGER(i4)       :: il_status 
    380401      !---------------------------------------------------------------- 
     402 
    381403      IF( tm_logger%l_use )THEN 
    382404         IF( tm_logger%i_id /= 0 )THEN 
     
    398420         ENDIF 
    399421      ENDIF 
     422 
    400423   END SUBROUTINE logger_footer 
     424   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     425   SUBROUTINE logger_trace(cd_msg, ld_flush) 
    401426   !------------------------------------------------------------------- 
    402427   !> @brief This subroutine write trace message on log file. 
     
    406431   !> @author J.Paul 
    407432   !> @date November, 2013 - Initial Version 
    408    ! 
     433   !> 
    409434   !> @param[in] cd_msg    message to write 
    410435   !> @param[in] ld_flush  flushing ouput 
    411436   !------------------------------------------------------------------- 
    412    SUBROUTINE logger_trace(cd_msg, ld_flush) 
    413       IMPLICIT NONE 
     437       
     438      IMPLICIT NONE 
     439 
    414440      ! Argument 
    415441      CHARACTER(LEN=*), INTENT(IN)  :: cd_msg 
    416442      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    417443      !---------------------------------------------------------------- 
     444 
    418445      IF( tm_logger%l_use )THEN 
    419446         IF( tm_logger%i_id /= 0 )THEN 
     
    434461         ENDIF 
    435462      ENDIF 
     463 
    436464   END SUBROUTINE logger_trace 
     465   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     466   SUBROUTINE logger_debug(cd_msg, ld_flush) 
    437467   !------------------------------------------------------------------- 
    438468   !> @brief This subroutine write debug message on log file. 
     
    442472   !> @author J.Paul 
    443473   !> @date November, 2013 - Initial Version 
    444    ! 
     474   !> 
    445475   !> @param[in] cd_msg    message to write 
    446476   !> @param[in] ld_flush  flushing ouput 
    447477   !------------------------------------------------------------------- 
    448    SUBROUTINE logger_debug(cd_msg, ld_flush) 
    449       IMPLICIT NONE 
     478       
     479      IMPLICIT NONE 
     480 
    450481      ! Argument 
    451482      CHARACTER(LEN=*), INTENT(IN)  :: cd_msg 
    452483      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    453484      !---------------------------------------------------------------- 
     485 
    454486      IF( tm_logger%l_use )THEN 
    455487         IF( tm_logger%i_id /= 0 )THEN 
     
    470502         ENDIF 
    471503      ENDIF 
     504 
    472505   END SUBROUTINE logger_debug 
     506   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     507   SUBROUTINE logger_info(cd_msg, ld_flush) 
    473508   !------------------------------------------------------------------- 
    474509   !> @brief This subroutine write info message on log file. 
     
    478513   !> @author J.Paul 
    479514   !> @date November, 2013 - Initial Version 
    480    ! 
     515   !> 
    481516   !> @param[in] cd_msg    message to write 
    482517   !> @param[in] ld_flush  flushing ouput 
    483518   !------------------------------------------------------------------- 
    484    SUBROUTINE logger_info(cd_msg, ld_flush) 
    485       IMPLICIT NONE 
     519 
     520      IMPLICIT NONE 
     521 
    486522      ! Argument 
    487523      CHARACTER(LEN=*), INTENT(IN)  :: cd_msg 
    488524      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    489525      !---------------------------------------------------------------- 
     526 
    490527      IF( tm_logger%l_use )THEN 
    491528         IF( tm_logger%i_id /= 0 )THEN 
     
    507544      ENDIF 
    508545   END SUBROUTINE logger_info 
     546   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     547   SUBROUTINE logger_warn(cd_msg, ld_flush) 
    509548   !------------------------------------------------------------------- 
    510549   !> @brief This subroutine write warning message on log file. 
     
    514553   !> @author J.Paul 
    515554   !> @date November, 2013 - Initial Version 
    516    ! 
     555   !> 
    517556   !> @param[in] cd_msg    message to write 
    518557   !> @param[in] ld_flush  flushing ouput 
    519558   !------------------------------------------------------------------- 
    520    SUBROUTINE logger_warn(cd_msg, ld_flush) 
    521       IMPLICIT NONE 
     559 
     560      IMPLICIT NONE 
     561 
    522562      ! Argument 
    523563      CHARACTER(LEN=*), INTENT(IN)  :: cd_msg 
    524564      LOGICAL,          INTENT(IN), OPTIONAL :: ld_flush 
    525565      !---------------------------------------------------------------- 
     566 
    526567      IF( tm_logger%l_use )THEN 
    527568         IF( tm_logger%i_id /= 0 )THEN 
     
    542583         ENDIF 
    543584      ENDIF 
     585 
    544586   END SUBROUTINE logger_warn 
     587   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     588   SUBROUTINE logger_error(cd_msg, ld_flush) 
    545589   !------------------------------------------------------------------- 
    546590   !> @brief This subroutine write error message on log file. 
     
    550594   !> @author J.Paul 
    551595   !> @date November, 2013 - Initial Version 
    552    ! 
     596   !> 
    553597   !> @param[in] cd_msg    message to write 
    554598   !> @param[in] ld_flush  flushing ouput 
    555599   !------------------------------------------------------------------- 
    556    SUBROUTINE logger_error(cd_msg, ld_flush) 
    557       IMPLICIT NONE 
     600 
     601      IMPLICIT NONE 
     602 
    558603      ! Argument 
    559604      CHARACTER(LEN=*), INTENT(IN)  :: cd_msg 
     
    563608      CHARACTER(LEN=lc) :: cl_nerror 
    564609      !---------------------------------------------------------------- 
     610 
    565611      IF( tm_logger%l_use )THEN 
    566612         IF( tm_logger%i_id /= 0 )THEN 
     
    590636         ENDIF 
    591637      ENDIF 
     638 
    592639   END SUBROUTINE logger_error 
     640   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     641   RECURSIVE SUBROUTINE logger_fatal(cd_msg) 
    593642   !------------------------------------------------------------------- 
    594643   !> @brief This subroutine write fatal error message on log file,  
     
    599648   !> @date September, 2015 
    600649   !> - stop program for FATAL ERROR if verbosity is none 
    601    ! 
     650   !> 
    602651   !> @param[in] cd_msg message to write 
    603652   !------------------------------------------------------------------- 
    604    RECURSIVE SUBROUTINE logger_fatal(cd_msg) 
    605       IMPLICIT NONE 
     653 
     654      IMPLICIT NONE 
     655 
    606656      ! Argument 
    607657      CHARACTER(LEN=*),           INTENT(IN) :: cd_msg 
    608658      !---------------------------------------------------------------- 
     659 
    609660      IF( tm_logger%l_use )THEN 
    610661         IF( tm_logger%i_id /= 0 )THEN 
     
    618669               CALL logger_close() 
    619670 
    620                WRITE(*,*) 'FATAL ERROR' 
     671               WRITE(*,*) 'FATAL ERROR, see ',TRIM(tm_logger%c_name) 
    621672               STOP 
    622673            ENDIF 
     
    630681         STOP 
    631682      ENDIF 
     683 
    632684   END SUBROUTINE logger_fatal 
     685   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     686   SUBROUTINE logger__write(cd_verb, cd_msg) 
    633687   !------------------------------------------------------------------- 
    634688   !> @brief This subroutine cut message to get maximum of 80 character  
     
    637691   !> @author J.Paul 
    638692   !> @date November, 2013 - Initial Version 
    639    ! 
     693   !> 
    640694   !> @param[in] cd_verb   verbosity of the message to write 
    641695   !> @param[in] cd_msg    message to write 
    642696   !------------------------------------------------------------------- 
    643    SUBROUTINE logger__write(cd_verb, cd_msg) 
    644       IMPLICIT NONE 
     697 
     698      IMPLICIT NONE 
     699 
    645700      ! Argument 
    646701      CHARACTER(LEN=*),           INTENT(IN) :: cd_verb 
     
    654709      CHARACTER(LEN=lc) :: cl_msg 
    655710      CHARACTER(LEN=lc) :: cl_tmp 
    656  
    657       !---------------------------------------------------------------- 
     711      !---------------------------------------------------------------- 
     712 
    658713      cl_verb=TRIM(ADJUSTL(cd_verb)) 
    659714      cl_msg=TRIM(ADJUSTL(cd_msg)) 
     
    686741 
    687742   END SUBROUTINE logger__write 
     743   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     744   FUNCTION logger__check_verb(cd_verb) & 
     745         & RESULT (lf_show) 
    688746   !------------------------------------------------------------------- 
    689747   !> @brief This function check validity of verbosity. 
     
    691749   !> @author J.Paul 
    692750   !> @date February, 2015 - Initial Version 
    693    ! 
     751   !> 
    694752   !> @param[in] cd_verb   verbosity of the message to write 
    695753   !> @return verbosity is valid or not 
    696754   !------------------------------------------------------------------- 
    697    FUNCTION logger__check_verb(cd_verb) 
    698       IMPLICIT NONE 
    699       ! Argument 
    700       CHARACTER(LEN=*),           INTENT(IN) :: cd_verb 
     755 
     756      IMPLICIT NONE 
     757 
     758      ! Argument 
     759      CHARACTER(LEN=*), INTENT(IN) :: cd_verb 
    701760 
    702761      !function 
    703       LOGICAL           :: logger__check_verb 
     762      LOGICAL                      :: lf_show 
    704763 
    705764      ! local variable 
    706765      ! loop indices 
    707766      INTEGER(i4) :: ji 
    708  
    709       !---------------------------------------------------------------- 
    710       logger__check_verb=.FALSE. 
     767      !---------------------------------------------------------------- 
     768 
     769      lf_show=.FALSE. 
    711770 
    712771      DO ji=1,im_nverbosity 
    713772         IF( TRIM(cd_verb) == TRIM(cm_verbosity(ji)) )THEN 
    714             logger__check_verb=.TRUE. 
     773            lf_show=.TRUE. 
    715774            EXIT 
    716775         ENDIF 
    717776      ENDDO 
    718777 
    719       IF( .NOT. logger__check_verb )THEN 
     778      IF( .NOT. lf_show )THEN 
    720779         CALL logger_open('logger.log') 
    721780         CALL logger_header() 
     
    724783         CALL logger_footer() 
    725784      ENDIF 
     785 
    726786   END FUNCTION logger__check_verb 
     787   !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    727788END MODULE logger 
    728789 
Note: See TracChangeset for help on using the changeset viewer.