Skip to content

Commit 132e080

Browse files
committed
reinstall log handler after loading config
1 parent 4fad185 commit 132e080

File tree

5 files changed

+26
-2
lines changed

5 files changed

+26
-2
lines changed

apps/elixir_ls_debugger/lib/debugger/cli.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule ElixirLS.Debugger.CLI do
33
alias ElixirLS.Debugger.{Output, Server}
44

55
def main do
6+
Application.put_env(:elixir, :ansi_enabled, false)
67
WireProtocol.intercept_output(&Output.debuggee_out/1, &Output.debuggee_err/1)
78
Launch.start_mix()
89
{:ok, _} = Application.ensure_all_started(:elixir_ls_debugger, :permanent)

apps/elixir_ls_debugger/lib/debugger/server.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,9 @@ defmodule ElixirLS.Debugger.Server do
963963

964964
Mix.Task.run("loadconfig")
965965

966+
# make sure ANSI is disabled
967+
Application.put_env(:elixir, :ansi_enabled, false)
968+
966969
unless is_list(task_args) and "--no-compile" in task_args do
967970
case Mix.Task.run("compile", ["--ignore-module-conflict"]) do
968971
{:error, _} ->

apps/language_server/lib/language_server/build.ex

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,22 @@ defmodule ElixirLS.LanguageServer.Build do
152152
# The project may override our logger config, so we reset it after loading their config
153153
logger_config = Application.get_all_env(:logger)
154154
Mix.Task.run("loadconfig")
155-
Application.put_all_env([logger: logger_config], persistent: true)
155+
Application.put_all_env([logger: logger_config])
156+
157+
# make sure ANSI is disabled
158+
Application.put_env(:elixir, :ansi_enabled, false)
159+
160+
if Version.match?(System.version(), ">= 1.15.0-dev") do
161+
# remove log handlers
162+
handler_ids = :logger.get_handler_ids()
163+
for handler_id <- handler_ids, handler != Logger.Backends.JsonRpc do
164+
:ok = :logger.remove_handler(handler_id) do
165+
end
166+
# make sure our handler is installed
167+
if Logger.Backends.JsonRpc not in handler_ids do
168+
:ok = :logger.add_handler(Logger.Backends.JsonRpc, Logger.Backends.JsonRpc, Logger.Backends.JsonRpc.handler_config())
169+
end
170+
end
156171
end
157172

158173
{status, diagnostics}

apps/language_server/lib/language_server/cli.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ defmodule ElixirLS.LanguageServer.CLI do
55
require Logger
66

77
def main do
8+
Application.put_env(:elixir, :ansi_enabled, false)
89
WireProtocol.intercept_output(&JsonRpc.print/1, &JsonRpc.print_err/1)
910

1011
# :logger application is already started
1112
# replace console logger with LSP
1213
if Version.match?(System.version(), ">= 1.15.0-dev") do
1314
:ok = :logger.remove_handler(:default)
14-
:ok = :logger.add_handler(Logger.Backends.JsonRpc, Logger.Backends.JsonRpc, %{formatter: Logger.default_formatter(colors: [enabled: false], format: "$message\n")})
15+
:ok = :logger.add_handler(Logger.Backends.JsonRpc, Logger.Backends.JsonRpc, Logger.Backends.JsonRpc.handler_config())
1516
else
1617
Application.put_env(:logger, :backends, [Logger.Backends.JsonRpc])
1718

apps/language_server/lib/language_server/json_rpc_logger_backend.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,8 @@ defmodule Logger.Backends.JsonRpc do
179179
chardata = formatter_mod.format(event, formatter_config)
180180
ElixirLS.LanguageServer.JsonRpc.log_message(elixir_log_level_to_lsp(level), chardata)
181181
end
182+
183+
def handler_config() do
184+
%{formatter: Logger.default_formatter(colors: [enabled: false], format: "$message\n")}
185+
end
182186
end

0 commit comments

Comments
 (0)