gpt4 book ai didi

c - libcurl 详细输出到文件,不使用命令行

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:45 38 4
gpt4 key购买 nike

我需要一种方法来将 libcurl 在 stderr 上生成的日志写入文件。我发现这是一个常见问题,例如在下面的问题中,

http://curl.haxx.se/mail/lib-2002-04/0051.html

但我相信这会将实际数据写入文件,而不是底层日志。

我需要如下所示的日志,而不是从 stderr 写入文件。

About to connect() to IP.IP.IP.IPa port 22 (#0) Trying IP.IP.IP.IPa ... == Info: connected Connected to IP... ( **...) port 22 (#0)

......等

Connection #0 to host IP.IP.IP.IPa left intact 34 bytes retrieved Closing connection #0

我还查看了 debug.c, http://curl.haxx.se/libcurl/c/debug.html

它使用以下选项的地方,

curl_easy_setopt(curl_handle, CURLOPT_DEBUGFUNCTION, my_trace);
curl_easy_setopt(curl_handle, CURLOPT_DEBUGDATA, &config);

但这又一次提供了有关传输的实际数据的更多信息。它不显示有关连接、身份验证等的任何内容。

请注意,我没有使用命令行工具。

编辑:事实证明,stderr/stdout 的重定向对于我的应用程序来说不是一个可接受的解决方案,因为有多个线程。

最佳答案

使用 curl_easy_setopt(curl_handle, CURLOPT_DEBUGFUNCTION, my_trace) 会将 libcurl 打印到 stderr 的所有消息重定向到此函数。然后,您可以根据需要在 my_trace 函数中处理消息。

如果您已经尝试过,但仍然看到消息被打印到 stderr,那么可能是因为以下两个原因:1) 您已经创建了多个 libcurl 句柄,但您没有在所有这些上设置 CURLOPT_DEBUGFUNCTION 或 2) libcurl 以外的其他东西正在打印消息。

因为您只想将 libcurl 的调试消息重定向到一个文件,您也可以执行 curl_easy_setopt(curl_handle, CURLOPT_STDERR, my_file_stream),但是如果 CURLOPT_DEBUGFUCTION 也不起作用会这样吗。

关于c - libcurl 详细输出到文件,不使用命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330370/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com