Parse log level from string.
@param[in] level_str Log level as string (NONE, ERROR, WARN, INFO, DEBUG, TRACE) @param[out] level Parsed log level constant
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | level_str | |||
integer, | intent(out) | :: | level |
subroutine parse_log_level(level_str, level) character(len=*), intent(in) :: level_str integer, intent(out) :: level character(len=256) :: upper_str integer :: i ! Convert to uppercase upper_str = level_str do i = 1, len_trim(upper_str) if (upper_str(i:i) >= 'a' .and. upper_str(i:i) <= 'z') then upper_str(i:i) = char(ichar(upper_str(i:i)) - 32) end if end do select case (trim(upper_str)) case ('NONE', '0') level = S3_LOG_LEVEL_NONE case ('ERROR', '1') level = S3_LOG_LEVEL_ERROR case ('WARN', 'WARNING', '2') level = S3_LOG_LEVEL_WARN case ('INFO', '3') level = S3_LOG_LEVEL_INFO case ('DEBUG', '4') level = S3_LOG_LEVEL_DEBUG case ('TRACE', '5') level = S3_LOG_LEVEL_TRACE case default level = S3_LOG_LEVEL_ERROR ! Default to ERROR write(*, '(A,A,A)') '[S3 WARN] Unknown log level "', trim(level_str), & '", defaulting to ERROR' end select end subroutine parse_log_level