You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elixir脚本中屏蔽第三方库的调试日志信息?

屏蔽Elixir脚本中第三方库的调试日志

要解决第三方库输出调试级Logger日志的问题,你可以通过以下几种方式全局屏蔽或调整日志级别:

方法一:在脚本中提前配置Logger级别

在Mix.install执行前直接设置Logger的日志级别,只输出指定级别及以上的日志(比如:info或:warn),调试级别的日志会被自动过滤:

#!/usr/bin/env -S ERL_FLAGS=+B elixir

# 设置Logger仅输出info及以上级别的日志
Logger.configure(level: :info)

Mix.install([
  {:req, "~> 0.5.0"},
  {:feeder_ex, "~> 1.1.0"},
  {:timex, "~> 3.7.0"},
  {:yaml_elixir, "~> 2.9"}
])

# 后续脚本代码...

方法二:通过环境变量预配置Logger

如果Mix.install启动依赖时Logger已初始化,更稳妥的方式是提前设置Logger的应用环境变量,确保Logger启动时就使用指定级别:

#!/usr/bin/env -S ERL_FLAGS=+B elixir

# 预配置Logger级别为:warn,仅输出警告及以上日志
Application.put_env(:logger, :level, :warn)

Mix.install([
  {:req, "~> 0.5.0"},
  {:feeder_ex, "~> 1.1.0"},
  {:timex, "~> 3.7.0"},
  {:yaml_elixir, "~> 2.9"}
])

# 后续脚本代码...

方法三:仅屏蔽特定库的调试日志(可选)

如果不想全局屏蔽所有调试日志,只想过滤特定库(比如Req)的调试信息,可以通过Logger的过滤功能实现:

#!/usr/bin/env -S ERL_FLAGS=+B elixir

Logger.configure(
  level: :debug,
  filter: fn log_event ->
    # 排除Req模块的调试日志
    not String.starts_with?(Atom.to_string(log_event.metadata.module), "Req.")
  end
)

Mix.install([
  {:req, "~> 0.5.0"},
  {:feeder_ex, "~> 1.1.0"},
  {:timex, "~> 3.7.0"},
  {:yaml_elixir, "~> 2.9"}
])

# 后续脚本代码...

注:日志级别优先级从低到高为:debug <:info <:warn <:error,设置级别后,低于该级别的日志会被忽略。

内容的提问来源于stack exchange,提问作者TNT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:32:41