为了保持日志文件的清洁和可读性,我想根据它们的级别打印元数据......
e.g。 :对于debug / warn / error我想打印metadatas,如:file和:line
然而,对于信息,我真的不需要那些信息...... 是否可以根据其级别打印元数据?
似乎应该可以根据以下格式添加元数据的方式:$metadata[$level]
答案 0 :(得分:0)
通过配置无法实现($metadata[$level]
意味着Logger.Formatter
将吐出元数据,后跟方括号中的级别。)
幸运的是,Logger.metadata/1
允许完全配置元数据。
此外,Logger.info/2
接受元数据作为第二个参数,因此您可以引入自己的宏来包装Logger.info
,提供您想要的任何元数据。
答案 1 :(得分:0)
我认为您可以实施your own logger format。
defmodule MyConsoleLogger do
def format(level, message, timestamp, metadata) do
# Custom formatting logic...
rescue
_ -> "could not format: #{inspect {level, message, metadata}}"
end
end
通过判断level
和metadata
,它可以满足您的要求。您还可以在metadata
中找到包含以下字段的行和文件。
:application - 当前的应用程序
:module - 当前模块
:function - 当前函数
:file - 当前文件
:line - 当前行
:pid - 当前进程ID