Elixir:Logger:控制台后端不记录应用程序,模块,文件等元数据

时间:2017-07-08 01:43:22

标签: elixir

我在伞形项目中有一个应用程序的记录器配置如下:

config :logger,
  backends: [:console],
  level: :debug,
  format: "\n$time $metadata[$level] $levelpad$message\n",
  metadata: [:application, :module, :function, :file, :line]

在工作进程中,我已记录:

Logger.info("Connected to RabbitMQ.")

但它不会记录任何元数据,如应用程序,模块或函数。

21:40:05.590 [info]  Connected to RabbitMQ.

记录元数据的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我们需要使用:console使用config/3设置配置密钥。以下配置显示元数据:

config :logger, :console,
  level: :debug,
  format: "\n$time $metadata[$level] $levelpad$message\n",
  metadata: [:application, :module, :function, :file, :line]

详细说明:

Logger documentation说:

  

以下是如何在config / config.exs文件中配置:console后端的示例:

config :logger, :console,
  format: "\n$time $metadata[$level] $levelpad$message\n"
  metadata: [:user_id]

上面的示例适用于元数据。

但是,文档中的另一个示例是在:console关键字列表中添加backends,并且未将:console设置为配置密钥。这不显示控制台的元数据。

  

在config / config.exs文件中配置:backends和compile_time_purge_level选项:

config :logger,
  backends: [:console],
  compile_time_purge_level: :info