【问题标题】:Elixir Logger : metadata according to levelElixir Logger:根据级别的元数据
【发布时间】:2018-03-08 22:49:31
【问题描述】:

为了保持日志文件的干净和可读性,我想根据它们的级别打印元数据...

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

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

按照元数据的添加方式好像应该可以,格式为:$metadata[$level]

【问题讨论】:

    标签: logging elixir


    【解决方案1】:

    无法通过配置实现($metadata[$level] 表示Logger.Formatter 会吐出元数据,后面是方括号中的级别。)

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

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

    【讨论】:

      【解决方案2】:

      我认为你可以实现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
      

      判断levelmetadata可以满足你的要求。您还可以在metadata 中找到行和文件,其中包含以下字段。

      :application - 当前应用程序

      :module - 当前模块

      :function - 当前函数

      :file - 当前文件

      :line - 当前行

      :pid - 当前进程ID

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 2019-12-15
        • 2014-01-17
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        相关资源
        最近更新 更多