繁体   English   中英

Elixir Logger:根据级别的元数据

[英]Elixir Logger : metadata according to level

为了保持日志文件的清洁和可读性,我想根据元数据的级别来打印元数据...

例如:对于调试/警告/错误,我想打印诸如:file和:line的元数据

但是对于信息,我真的不需要这些信息...是否可以根据元数据的级别打印元数据?

根据必须以以下格式添加元数据的方式,似乎应该可行: $metadata[$level]

通过配置是不可能的( $metadata[$level]意味着Logger.Formatter将吐出元数据,然后将$metadata[$level] Logger.Formatter方括号中。)

幸运的是, Logger.metadata/1允许完全配置您的元数据。

另外, Logger.info/2接受元数据作为第二个参数,因此您可以引入自己的宏来包装Logger.info提供所需的任何元数据。

我认为您可以实现自己的记录器格式

defmodule MyConsoleLogger do
  def format(level, message, timestamp, metadata) do
    # Custom formatting logic...
  rescue
    _ -> "could not format: #{inspect {level, message, metadata}}"
  end
end

通过判断levelmetadata可以满足您的要求。 您还可以在metadata找到具有以下字段的行和文件。

:application-当前应用程序

:module-当前模块

:function-当前函数

:file-当前文件

:line-当前行

:pid-当前进程ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM