Changeset 7731 for branches/UKMO/dev_r5518_v3.6_asm_nemovar_community/NEMOGCM/TOOLS/SIREN/src/logger.f90
- Timestamp:
- 2017-02-23T14:23:32+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_v3.6_asm_nemovar_community/NEMOGCM/TOOLS/SIREN/src/logger.f90
r5037 r7731 16 16 !> but not necessarily "wrong". 17 17 !> - error : Other runtime errors or unexpected conditions. 18 !> - fatal : Severe errors that cause premature termination. <br />18 !> - fatal : Severe errors that cause premature termination. 19 19 !> default verbosity is warning 20 !> - none : to not create and write any information in logger file.<br /> 20 21 ! 21 22 !> If total number of error exceeded maximum number … … 24 25 !> to open/create logger file:<br/> 25 26 !> @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]) 27 28 !> @endcode 28 29 !> - cd_file is logger file name … … 120 121 !> J.Paul 121 122 ! 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 123 127 !> 124 128 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 151 155 152 156 PRIVATE :: logger__write ! cut message to get maximum of 80 character by line in log file 157 PRIVATE :: logger__check_verb! check verbosity validity 153 158 154 159 TYPE TLOGGER !< logger structure 155 160 INTEGER(i4) :: i_id = 0 !< log file id 161 LOGICAL :: l_use=.TRUE. !< use logger or not 156 162 CHARACTER(LEN=lc) :: c_name !< log file name 157 163 CHARACTER(LEN=lc) :: c_verbosity = "warning" !< verbosity choose … … 163 169 164 170 ! module variable 165 INTEGER(i4), PARAMETER :: im_nverbosity= 6!< number of log level171 INTEGER(i4), PARAMETER :: im_nverbosity=7 !< number of log level 166 172 CHARACTER(len=*), DIMENSION(im_nverbosity), PARAMETER :: cm_verbosity= & !< verbosity array 167 173 & (/ 'trace ',& … … 170 176 & 'warning ',& 171 177 & 'error ',& 172 & 'fatal '/) 178 & 'fatal ',& 179 & 'none '/) 173 180 174 181 TYPE(TLOGGER), SAVE :: tm_logger !< logger structure … … 184 191 !> 185 192 !> @author J.Paul 186 !> - November, 2013- Initial Version193 !> @date November, 2013 - Initial Version 187 194 ! 188 195 !> @param[in] cd_file log file name 189 196 !> @param[in] cd_verbosity log file verbosity 197 !> @param[in] id_maxerror maximum number of error 190 198 !> @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) 194 201 IMPLICIT NONE 195 202 ! Argument 196 203 CHARACTER(len=*), INTENT(IN) :: cd_file ! log file name 197 204 CHARACTER(len=*), INTENT(IN), OPTIONAL :: cd_verbosity ! log file verbosity 205 INTEGER(i4), INTENT(IN), OPTIONAL :: id_maxerror ! log max error 198 206 INTEGER(i4), INTENT(IN), OPTIONAL :: id_logid ! log file id 199 INTEGER(i4), INTENT(IN), OPTIONAL :: id_maxerror ! log max error200 207 201 208 ! local variable 202 209 INTEGER(i4) :: il_status 203 210 211 LOGICAL :: ll_valid 212 204 213 ! loop 205 214 INTEGER(i4) :: ji 206 215 !---------------------------------------------------------------- 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 216 226 217 ! if present, change verbosity value 227 218 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 244 263 ENDIF 245 264 … … 249 268 !> 250 269 !> @author J.Paul 251 !> - November, 2013- Initial Version270 !> @date November, 2013 - Initial Version 252 271 !------------------------------------------------------------------- 253 272 SUBROUTINE logger_close() … … 256 275 INTEGER(i4) :: il_status 257 276 !---------------------------------------------------------------- 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 267 288 ENDIF 268 289 … … 272 293 !> 273 294 !> @author J.Paul 274 !> - November, 2013- Initial Version295 !> @date November, 2013 - Initial Version 275 296 !------------------------------------------------------------------- 276 297 SUBROUTINE logger_flush() 277 298 IMPLICIT NONE 278 299 !---------------------------------------------------------------- 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 287 310 ENDIF 288 311 … … 292 315 !> 293 316 !> @author J.Paul 294 !> - November, 2013- Initial Version317 !> @date November, 2013 - Initial Version 295 318 !------------------------------------------------------------------- 296 319 RECURSIVE SUBROUTINE logger_header() … … 299 322 INTEGER(i4) :: il_status 300 323 !---------------------------------------------------------------- 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 314 339 ENDIF 315 340 … … 319 344 !> 320 345 !> @author J.Paul 321 !> - November, 2013- Initial Version346 !> @date November, 2013 - Initial Version 322 347 !------------------------------------------------------------------- 323 348 SUBROUTINE logger_footer() … … 326 351 INTEGER(i4) :: il_status 327 352 !---------------------------------------------------------------- 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 344 371 ENDIF 345 372 END SUBROUTINE logger_footer … … 350 377 !> 351 378 !> @author J.Paul 352 !> - November, 2013- Initial Version379 !> @date November, 2013 - Initial Version 353 380 ! 354 381 !> @param[in] cd_msg message to write … … 361 388 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 362 389 !---------------------------------------------------------------- 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 378 407 ENDIF 379 408 END SUBROUTINE logger_trace … … 384 413 !> 385 414 !> @author J.Paul 386 !> - November, 2013- Initial Version415 !> @date November, 2013 - Initial Version 387 416 ! 388 417 !> @param[in] cd_msg message to write … … 395 424 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 396 425 !---------------------------------------------------------------- 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 412 443 ENDIF 413 444 END SUBROUTINE logger_debug … … 418 449 !> 419 450 !> @author J.Paul 420 !> - November, 2013- Initial Version451 !> @date November, 2013 - Initial Version 421 452 ! 422 453 !> @param[in] cd_msg message to write … … 429 460 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 430 461 !---------------------------------------------------------------- 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 446 479 ENDIF 447 480 END SUBROUTINE logger_info … … 452 485 !> 453 486 !> @author J.Paul 454 !> - November, 2013- Initial Version487 !> @date November, 2013 - Initial Version 455 488 ! 456 489 !> @param[in] cd_msg message to write … … 463 496 LOGICAL, INTENT(IN), OPTIONAL :: ld_flush 464 497 !---------------------------------------------------------------- 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 480 515 ENDIF 481 516 END SUBROUTINE logger_warn … … 486 521 !> 487 522 !> @author J.Paul 488 !> - November, 2013- Initial Version523 !> @date November, 2013 - Initial Version 489 524 ! 490 525 !> @param[in] cd_msg message to write … … 500 535 CHARACTER(LEN=lc) :: cl_nerror 501 536 !---------------------------------------------------------------- 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 528 566 END SUBROUTINE logger_error 529 567 !------------------------------------------------------------------- … … 532 570 !> 533 571 !> @author J.Paul 534 !> - November, 2013- Initial Version572 !> @date November, 2013 - Initial Version 535 573 ! 536 574 !> @param[in] cd_msg message to write … … 541 579 CHARACTER(LEN=*), INTENT(IN) :: cd_msg 542 580 !---------------------------------------------------------------- 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 560 600 ENDIF 561 601 END SUBROUTINE logger_fatal … … 565 605 !> 566 606 !> @author J.Paul 567 !> - November, 2013- Initial Version607 !> @date November, 2013 - Initial Version 568 608 ! 569 609 !> @param[in] cd_verb verbosity of the message to write … … 615 655 616 656 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 617 696 END MODULE logger 618 697
Note: See TracChangeset
for help on using the changeset viewer.