🐛 fix(logging): support --log-stderr and clarify stdin wait
- Make logs go to stderr by default (keep LSP stdout clean). - Add --log-stderr/--log-stdout flags and wire config.use_stderr into spdlog. - Log an explicit message when waiting for LSP input on stdin.
This commit is contained in:
parent
241de77152
commit
9a12b1b194
|
|
@ -112,6 +112,7 @@ namespace lsp::core
|
|||
void LspServer::Run()
|
||||
{
|
||||
spdlog::info("LSP server starting main loop...");
|
||||
spdlog::info("Waiting for LSP messages on stdin...");
|
||||
|
||||
// 设置二进制模式
|
||||
#ifdef _WIN32
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ namespace lsp::utils
|
|||
const ServerConfig& ArgsParser::Parse(int argc, char* argv[])
|
||||
{
|
||||
config_ = ServerConfig{};
|
||||
bool use_stdio = false;
|
||||
// Default to stderr so LSP stdio (stdout) stays clean.
|
||||
config_.use_stderr = true;
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
std::string arg = argv[i];
|
||||
|
|
@ -75,10 +77,14 @@ namespace lsp::utils
|
|||
config_.log_level = spdlog::level::err;
|
||||
else if (arg == "--log=off")
|
||||
config_.log_level = spdlog::level::off;
|
||||
else if (arg == "--log-stderr")
|
||||
config_.use_stderr = true;
|
||||
else if (arg == "--log-stdout")
|
||||
config_.use_stderr = false;
|
||||
else if (arg.find("--log-file=") == 0)
|
||||
config_.log_file = arg.substr(std::strlen("--log-file="));
|
||||
else if (arg == "--use-stdio")
|
||||
use_stdio = true;
|
||||
config_.use_stderr = true;
|
||||
else if (arg.find("--threads=") == 0)
|
||||
{
|
||||
auto value = arg.substr(std::strlen("--threads="));
|
||||
|
|
@ -90,9 +96,6 @@ namespace lsp::utils
|
|||
}
|
||||
}
|
||||
|
||||
if (!use_stdio)
|
||||
config_.use_stderr = true;
|
||||
|
||||
return config_;
|
||||
}
|
||||
|
||||
|
|
@ -113,7 +116,7 @@ namespace lsp::utils
|
|||
}
|
||||
else
|
||||
{
|
||||
auto console_logger = spdlog::stdout_logger_mt("console_logger");
|
||||
auto console_logger = config.use_stderr ? spdlog::stderr_logger_mt("console_logger") : spdlog::stdout_logger_mt("console_logger");
|
||||
console_logger->set_level(config.log_level);
|
||||
spdlog::set_default_logger(console_logger);
|
||||
}
|
||||
|
|
@ -127,8 +130,10 @@ namespace lsp::utils
|
|||
<< "Options:\\n"
|
||||
<< " --help Show this help message\\n"
|
||||
<< " --log=<level> Set log level (trace, debug, info, warn, error, off)\\n"
|
||||
<< " --log-stderr Output logs to stderr (default)\\n"
|
||||
<< " --log-stdout Output logs to stdout\\n"
|
||||
<< " --log-file=<path> Output logs to specified file\\n"
|
||||
<< " --use-stdio Use stdin/stdout for I/O (default: stderr)\\n"
|
||||
<< " --use-stdio Alias for --log-stderr (keep stdout clean for LSP)\\n"
|
||||
<< " --threads=<count> Number of worker threads\\n"
|
||||
<< " --interpreter=<path> Custom interpreter path\\n";
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue