将 clangd stderr 重定向到文件而不是控制台
redirect clangd stderr to a file instead of console
clangd 将日志消息写入 stderr。在 Linux 中,我需要它将 stderr 重定向到日志文件以备将来使用,而不是控制台
我使用的命令是:
clangd --clang-tidy -compile-commands-dir=$SOME_PATH --log=error > $SOME_PATH/clangd.log 2>&1
它可以启动并重定向到文件,但几秒钟后,clangd 停止并在 clangd.log 文件中出现此错误
I[18:10:31.484] clangd version 9.0.0 (https://github.com/llvm-mirror/llvm c62b24f070c9a4bb1a76409e623042a740cac4cd)
I[18:10:31.484] Working directory: ......
I[18:10:31.484] argv[0]: clangd
I[18:10:31.484] argv[1]: --clang-tidy
I[18:10:31.484] argv[2]: -compile-commands-dir=......
I[18:10:31.484] argv[3]: --log=error
I[18:10:31.484] Starting LSP over stdin/stdout
......
I[18:10:31.706] <-- initialize("1")
I[18:10:31.707] --> reply:initialize("1") 0 ms
Content-Length: 1038
......
V[18:10:41.710] <<< {"id":"2","jsonrpc":"2.0","method":"shutdown","params":null}
I[18:10:41.711] <-- shutdown("2")
I[18:10:41.711] --> reply:shutdown("2") 0 ms
Content-Length: 40
{"id":"2","jsonrpc":"2.0","result":null}V[18:10:41.711] >>> {"id":"2","jsonrpc":"2.0","result":null}
E[18:10:46.711] Transport error: Input/output error
我错过了什么?为什么传输错误?到 clangd 进程,stderr 是控制台还是文件应该不是问题?
我只想将 stderr 重定向到一个文件而不是控制台。我不想在控制台显示很多日志,这对不关心的用户来说很烦人,也不利于开发人员以后查看日志。
提前致谢
我犯了一个愚蠢而常见的错误,"always redirect stdout along with stderr"
像这样
> $SOME_PATH/clangd.log 2>&1
我只通过将 stderr 重定向到一个文件解决了这个问题,不理会 stdout。
工作脚本是
clangd --clang-tidy -compile-commands-dir=$SOME_PATH --log=error 2> $SOME_PATH/clangd.log
clangd 将日志消息写入 stderr。在 Linux 中,我需要它将 stderr 重定向到日志文件以备将来使用,而不是控制台
我使用的命令是:
clangd --clang-tidy -compile-commands-dir=$SOME_PATH --log=error > $SOME_PATH/clangd.log 2>&1
它可以启动并重定向到文件,但几秒钟后,clangd 停止并在 clangd.log 文件中出现此错误
I[18:10:31.484] clangd version 9.0.0 (https://github.com/llvm-mirror/llvm c62b24f070c9a4bb1a76409e623042a740cac4cd)
I[18:10:31.484] Working directory: ......
I[18:10:31.484] argv[0]: clangd
I[18:10:31.484] argv[1]: --clang-tidy
I[18:10:31.484] argv[2]: -compile-commands-dir=......
I[18:10:31.484] argv[3]: --log=error
I[18:10:31.484] Starting LSP over stdin/stdout
......
I[18:10:31.706] <-- initialize("1")
I[18:10:31.707] --> reply:initialize("1") 0 ms
Content-Length: 1038
......
V[18:10:41.710] <<< {"id":"2","jsonrpc":"2.0","method":"shutdown","params":null}
I[18:10:41.711] <-- shutdown("2")
I[18:10:41.711] --> reply:shutdown("2") 0 ms
Content-Length: 40
{"id":"2","jsonrpc":"2.0","result":null}V[18:10:41.711] >>> {"id":"2","jsonrpc":"2.0","result":null}
E[18:10:46.711] Transport error: Input/output error
我错过了什么?为什么传输错误?到 clangd 进程,stderr 是控制台还是文件应该不是问题?
我只想将 stderr 重定向到一个文件而不是控制台。我不想在控制台显示很多日志,这对不关心的用户来说很烦人,也不利于开发人员以后查看日志。
提前致谢
我犯了一个愚蠢而常见的错误,"always redirect stdout along with stderr"
像这样
> $SOME_PATH/clangd.log 2>&1
我只通过将 stderr 重定向到一个文件解决了这个问题,不理会 stdout。
工作脚本是
clangd --clang-tidy -compile-commands-dir=$SOME_PATH --log=error 2> $SOME_PATH/clangd.log