非常教程

Elixir 1.5参考手册

登录 | Logger

Logger.Formatter

为日志格式化数据的方便性。

此模块允许开发人员指定用作日志消息模板的字符串,例如:

$time $metadata[$level] $message\n

将将错误消息打印为:

18:43:12.439 user_id=13 [error] Hello\n

可以使用的有效参数有:

  • $time-发送日志消息的时间
  • $date-日志消息发送的日期
  • $message-日志信息
  • $level-原木水平
  • $node-打印消息的节点
  • $metadata-用户控制的数据"key=val key2=val2"格式
  • $levelpad-如果级别为4个字符长,则设置为单个空格,否则设置为空空间。用于在级别之后对齐消息。

后端通常允许开发人员通过配置文件提供此类控制字符串。本模块提供compile/1,它将字符串编译为运行时快速操作的格式,并且format/5将编译的模式格式化为实际的IO数据。

元数据

要发送给记录器的元数据可以用Logger.metadata/0Logger.metadata/1职能。例如,您可以设置Logger.metadata([user_id: 13])添加用户[医]ID元数据到当前进程。用户可以将后端配置为选择要打印的元数据,并替换$metadata价值。

类型

pattern()time()

=

函数

compile(str)

将格式字符串编译为format/5能处理

format(config, level, msg, ts, md)

采用已编译的格式,并注入、级别、时间戳、消息和元数据列表,并返回格式正确的字符串。

prune(binary)

修剪无效的utf-8码点

pattern()

pattern ::
  :date |
  :level |
  :levelpad |
  :message |
  :metadata |
  :node |
  :time

time()

time() :: {{1970..10000, 1..12, 1..31}, {0..23, 0..59, 0..59, 0..999}}

compile(str)

compile({atom, atom}) :: {atom, atom}
compile(binary | nil) :: [pattern | binary]

将格式字符串编译为format/5可以应付。

检查模块文档以获得有关有效参数的文档。如果你通过nil,默认为:$time $metadata [$level] $levelpad$message\n

如果您想让您自己的自定义格式化程序简单地传递{module, function}compile/1其余的都处理好了。

iex> Logger.Formatter.compile("$time $metadata [$level] $message\n")
[:time, " ", :metadata, " [", :level, "] ", :message, "\n"]

format(config, level, msg, ts, md)

format({atom, atom} | [pattern | binary], Logger.level, Logger.message, time, keyword) :: IO.chardata

采用编译后的格式,注入、级别、时间戳、消息和元数据列表,并返回格式正确的字符串。

prune(binary)

prune(IO.chardata) :: IO.chardata

修剪无效的UTF-8码点.

通常在无法打印数据时在格式化后调用。

登录 | Logger相关

Elixir 1.5

Elixir 基于 Erlang 虚拟机的函数式、面向并行,是一种较好的编程语言。它以 Erlang 为基础,支持分布式、高容错、实时应用程序的开发。

主页 https://elixir-lang.org/
源码 https://github.com/elixir-lang/elixir
版本 1.5
发布版本 1.5.2