Logging: curl - write debug output through MPD log instead of curl writing directly to stderr.
The output gets the standard MPD log format with domain curl and a timestamp. Using CURLOPT_DEBUGFUNCTION that is only called when CURLOPT_VERBOSE is in effect when MPD log level is verbose.
This commit is contained in:
@ -436,6 +436,31 @@ input_curl_finish() noexcept
|
|||||||
http_200_aliases = nullptr;
|
http_200_aliases = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CURLOPT_DEBUGFUNCTION
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
CurlDebugToLog(CURL *handle, curl_infotype type, char *data, size_t size, void *user)
|
||||||
|
{
|
||||||
|
(void)handle;
|
||||||
|
(void)user;
|
||||||
|
|
||||||
|
switch(type) {
|
||||||
|
case CURLINFO_TEXT:
|
||||||
|
Log(LogLevel::DEBUG, curl_domain, std::string_view{data, size});
|
||||||
|
break;
|
||||||
|
case CURLINFO_HEADER_OUT:
|
||||||
|
FmtDebug(curl_domain, "Header out: {}", std::string_view{data, size});
|
||||||
|
break;
|
||||||
|
case CURLINFO_HEADER_IN:
|
||||||
|
FmtDebug(curl_domain, "Header in: {}", std::string_view{data, size});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename I>
|
template<typename I>
|
||||||
inline
|
inline
|
||||||
CurlInputStream::CurlInputStream(EventLoop &event_loop, std::string_view _url,
|
CurlInputStream::CurlInputStream(EventLoop &event_loop, std::string_view _url,
|
||||||
@ -513,6 +538,8 @@ CreateEasy(const char *url, struct curl_slist *headers)
|
|||||||
|
|
||||||
easy.SetRequestHeaders(headers);
|
easy.SetRequestHeaders(headers);
|
||||||
|
|
||||||
|
easy.SetOption(CURLOPT_DEBUGFUNCTION, CurlDebugToLog);
|
||||||
|
|
||||||
return easy;
|
return easy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user