簡體   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