- Timestamp:
- 2016-11-18T09:34:22+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/TOOLS/SIREN/src/logger.f90
r5602 r7261 6 6 ! 7 7 ! DESCRIPTION: 8 !> @brief This module create logger file and allow to fill it depending of verbosity.8 !> @brief This module manage log file. 9 9 !> @details 10 !> This module create log file and fill it depending of verbosity. 11 !> 10 12 !> verbosity could be choosen between : 11 13 !> - trace : Most detailed information. … … 16 18 !> but not necessarily "wrong". 17 19 !> - 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 !> 21 26 !> If total number of error exceeded maximum number 22 27 !> authorized, program stop. … … 24 29 !> to open/create logger file:<br/> 25 30 !> @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]) 27 32 !> @endcode 28 33 !> - cd_file is logger file name … … 34 39 !> @code 35 40 !> CALL logger_close() 41 !> @endcode 42 !> 43 !> to clean logger file:<br/> 44 !> @code 45 !> CALL logger_clean() 36 46 !> @endcode 37 47 !> … … 103 113 !> CALL logger_footer() 104 114 !> CALL logger_close() 115 !> CALL logger_clean() 105 116 !> @endcode 106 117 !> … … 115 126 !> CALL logger_footer() 116 127 !> CALL logger_close() 128 !> CALL logger_clean() 117 129 !> @endcode 118 130 ! … … 120 132 !> J.Paul 121 133 ! 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 123 140 !> 124 141 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 140 157 PUBLIC :: logger_open !< create a log file with given verbosity 141 158 PUBLIC :: logger_close !< close log file 159 PUBLIC :: logger_clean !< clean log structure 142 160 PUBLIC :: logger_header !< write header on log file 143 161 PUBLIC :: logger_footer !< write footer on log file … … 151 169 152 170 PRIVATE :: logger__write ! cut message to get maximum of 80 character by line in log file 171 PRIVATE :: logger__check_verb! check verbosity validity 153 172 154 173 TYPE TLOGGER !< logger structure 155 174 INTEGER(i4) :: i_id = 0 !< log file id 175 LOGICAL :: l_use=.TRUE. !< use logger or not 156 176 CHARACTER(LEN=lc) :: c_name !< log file name 157 177 CHARACTER(LEN=lc) :: c_verbosity = "warning" !< verbosity choose … … 163 183 164 184 ! module variable 165 INTEGER(i4), PARAMETER :: im_nverbosity= 6!< number of log level185 INTEGER(i4), PARAMETER :: im_nverbosity=7 !< number of log level 166 186 CHARACTER(len=*), DIMENSION(im_nverbosity), PARAMETER :: cm_verbosity= & !< verbosity array 167 187 & (/ 'trace ',& … … 170 190 & 'warning ',& 171 191 & 'error ',& 172 & 'fatal '/) 192 & 'fatal ',& 193 & 'none '/) 173 194 174 195 TYPE(TLOGGER), SAVE :: tm_logger !< logger structure … … 184 205 !> 185 206 !> @author J.Paul 186 !> - November, 2013- Initial Version207 !> @date November, 2013 - Initial Version 187 208 ! 188 209 !> @param[in] cd_file log file name 189 210 !> @param[in] cd_verbosity log file verbosity 211 !> @param[in] id_maxerror maximum number of error 190 212 !> @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) 194 215 IMPLICIT NONE 195 216 ! Argument 196 217 CHARACTER(len=*), INTENT(IN) :: cd_file ! log file name 197 218 CHARACTER(len=*), INTENT(IN), OPTIONAL :: cd_verbosity ! log file verbosity 219 INTEGER(i4), INTENT(IN), OPTIONAL :: id_maxerror ! log max error 198 220 INTEGER(i4), INTENT(IN), OPTIONAL :: id_logid ! log file id 199 INTEGER(i4), INTENT(IN), OPTIONAL :: id_maxerror ! log max error200 221 201 222 ! local variable 202 223 INTEGER(i4) :: il_status 203 224 225 LOGICAL :: ll_valid 226 204 227 ! loop 205 228 INTEGER(i4) :: ji 206 229 !---------------------------------------------------------------- 207 ! get id if not already define208 IF( PRESENT(id_logid) )THEN209 tm_logger%i_id=id_logid210 ELSE211 tm_logger%i_id=fct_getunit()212 ENDIF213 214 ! open log file215 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 filename224 tm_logger%c_name=TRIM(ADJUSTL(cd_file))225 230 226 231 ! if present, change verbosity value 227 232 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 244 277 ENDIF 245 278 … … 249 282 !> 250 283 !> @author J.Paul 251 !> - November, 2013- Initial Version284 !> @date November, 2013 - Initial Version 252 285 !------------------------------------------------------------------- 253 286 SUBROUTINE logger_close() 254 287 IMPLICIT NONE 255 288 ! 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 267 302 ENDIF 268 303 269 304 END SUBROUTINE logger_close 270 305 !------------------------------------------------------------------- 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 !------------------------------------------------------------------- 271 320 !> @brief This subroutine flushing output into log file. 272 321 !> 273 322 !> @author J.Paul 274 !> - November, 2013- Initial Version323 !> @date November, 2013 - Initial Version 275 324 !------------------------------------------------------------------- 276 325 SUBROUTINE logger_flush() 277 326 IMPLICIT NONE 278 327 !---------------------------------------------------------------- 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 287 338 ENDIF 288 339 … … 292 343 !> 293 344 !> @author J.Paul 294 !> - November, 2013- Initial Version345 !> @date November, 2013 - Initial Version 295 346 !------------------------------------------------------------------- 296 347 RECURSIVE SUBROUTINE logger_header() … … 299 350 INTEGER(i4) :: il_status 300 351 !---------------------------------------------------------------- 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 314 367 ENDIF 315 368 … … 319 372 !> 320 373 !> @author J.Paul 321 !> - November, 2013- Initial Version374 !> @date November, 2013 - Initial Version 322 375 !------------------------------------------------------------------- 323 376 SUBROUTINE logger_footer() … … 326 379 INTEGER(i4) :: il_status 327 380 !---------------------------------------------------------------- 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 344 399 ENDIF 345 400 END SUBROUTINE logger_footer … … 350 405 !> 351 406 !> @author J.Paul 352 !> - November, 2013- Initial Version407 !> @date November, 2013 - Initial Version 353 408 ! 354 409 !> @param[in] cd_msg message to write … … 361 416 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 362 417 !---------------------------------------------------------------- 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 378 435 ENDIF 379 436 END SUBROUTINE logger_trace … … 384 441 !> 385 442 !> @author J.Paul 386 !> - November, 2013- Initial Version443 !> @date November, 2013 - Initial Version 387 444 ! 388 445 !> @param[in] cd_msg message to write … … 395 452 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 396 453 !---------------------------------------------------------------- 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 412 471 ENDIF 413 472 END SUBROUTINE logger_debug … … 418 477 !> 419 478 !> @author J.Paul 420 !> - November, 2013- Initial Version479 !> @date November, 2013 - Initial Version 421 480 ! 422 481 !> @param[in] cd_msg message to write … … 429 488 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 430 489 !---------------------------------------------------------------- 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 446 507 ENDIF 447 508 END SUBROUTINE logger_info … … 452 513 !> 453 514 !> @author J.Paul 454 !> - November, 2013- Initial Version515 !> @date November, 2013 - Initial Version 455 516 ! 456 517 !> @param[in] cd_msg message to write … … 463 524 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 464 525 !---------------------------------------------------------------- 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 480 543 ENDIF 481 544 END SUBROUTINE logger_warn … … 486 549 !> 487 550 !> @author J.Paul 488 !> - November, 2013- Initial Version551 !> @date November, 2013 - Initial Version 489 552 ! 490 553 !> @param[in] cd_msg message to write … … 500 563 CHARACTER(LEN=lc) :: cl_nerror 501 564 !---------------------------------------------------------------- 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 528 592 END SUBROUTINE logger_error 529 593 !------------------------------------------------------------------- … … 532 596 !> 533 597 !> @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 535 601 ! 536 602 !> @param[in] cd_msg message to write … … 541 607 CHARACTER(LEN=*), INTENT(IN) :: cd_msg 542 608 !---------------------------------------------------------------- 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') 555 627 ENDIF 556 628 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 560 631 ENDIF 561 632 END SUBROUTINE logger_fatal … … 565 636 !> 566 637 !> @author J.Paul 567 !> - November, 2013- Initial Version638 !> @date November, 2013 - Initial Version 568 639 ! 569 640 !> @param[in] cd_verb verbosity of the message to write … … 615 686 616 687 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 617 727 END MODULE logger 618 728
Note: See TracChangeset
for help on using the changeset viewer.