curl: support repeated use of the verbose option; -vv etc

- make mentioning `-v` on the curl command line increase the
  verbosity of the trace output
- related discussion https://github.com/curl/curl/discussions/13810
- make a single -v revert all previous -v+ changes
- make --no-verbose also reset all trace configs

Closes #13977
This commit is contained in:
Stefan Eissing 2024-08-06 11:44:23 +02:00 committed by Daniel Stenberg
parent 53146dd262
commit 06c5829dab
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
5 changed files with 175 additions and 56 deletions

View file

@ -28,8 +28,28 @@ and a line starting with * means additional info provided by curl.
If you only want HTTP headers in the output, --include or --dump-header might
be more suitable options.
If you think this option still does not give you enough details, consider using
--trace or --trace-ascii instead.
Since curl 8.10, mentioning this option several times in the same argument
increases the level of the trace output. However, as before,
a single `-v`, `--verbose` or `--no-verbose` reverts any additions by
previous `-vv` again. This means that `-vv -v` is equivalent to `-v`. This
avoids unwanted verbosity when the option is mentioned in the command line
*and* curl config files.
Using it twice, e.g. `-vv`, outputs time (`--trace-time`) and transfer
ids (`--trace-ids`), as well as enable tracing for all protocols
(`--trace-config protocol`).
Adding a third verbose outputs transfer content (`--trace-ascii %`) and
enable tracing of more components (`--trace-config read,write,ssl`).
A forth time adds tracing of all network components.
(`--trace-config network`).
Any addition of the verbose option after that has no effect.
If you think this option does not give you the right details, consider using
--trace or --trace-ascii instead. Or use it only once and use `--trace-config`
to trace the specific components you wish to see.
Note that verbose output of curl activities and network traffic might contain
sensitive data, including usernames, credentials or secret data content. Be

View file

@ -109,6 +109,27 @@ Traces reading of upload data from the application in order to send it to the se
Traces writing of download data, received from the server, to the application.
# TRACE GROUPS
Besides the specific component names there are the following group names
defined:
## `all`
## `network`
All components involved in bare network I/O, including the SSL layer.
All components that your libcurl is built with.
## `protocol`
All components involved in transfer protocols, such as 'ftp' and 'http/2'.
## `proxy`
All components involved in use of proxies.
# %PROTOCOLS%
# EXAMPLE