[英]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
通過判斷level
和metadata
可以滿足您的要求。 您還可以在metadata
找到具有以下字段的行和文件。
:application-當前應用程序
:module-當前模塊
:function-當前函數
:file-當前文件
:line-當前行
:pid-當前進程ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.