查看源代码 logger_handler 行为模块 (内核 v10.2)

logger_handler 行为模块。

用于日志处理程序的行为模块。日志处理程序是一个回调模块,当日志事件通过所有过滤器并准备好记录到某处时会被调用。有关更多信息,请参阅用户指南中的处理程序

另请参阅

logger_filters, logger_formatter, logger

摘要

类型

Logger 的处理程序配置数据。以下是默认值:

处理程序实例的唯一标识符。

过载保护配置。

回调

当即将添加新处理程序时,在临时进程上调用该函数。目的是验证配置并启动处理程序所需的所有资源。

当处理程序的配置即将更改时,在临时进程上调用该函数。目的是验证新配置并根据新配置采取行动。

当调用 Logger API 函数之一来获取处理程序配置时,会调用该函数,例如 logger:get_handler_config/1

当给定日志事件的所有主过滤器和所有处理程序过滤器都通过时,会调用该函数。它在客户端进程上调用,也就是发出日志事件的进程。

当即将删除处理程序时,在临时进程上调用该函数。目的是释放处理程序使用的所有资源。

类型

链接到此类型

config()

查看源代码 (自 OTP 27.0 起)
-type config() ::
          #{id => id(),
            config => term(),
            level => logger:level() | all | none,
            module => module(),
            filter_default => log | stop,
            filters => [{logger:filter_id(), logger:filter()}],
            formatter => {module(), logger:formatter_config()}}.

Logger 的处理程序配置数据。以下是默认值:

  • level => all
  • filter_default => log
  • filters => []
  • formatter => {logger_formatter, DefaultFormatterConfig}

除了这些之外,Logger 还会自动插入以下字段,这些值取自logger:add_handler/3的前两个参数。

  • id => HandlerId
  • module => Module

这些是只读的,不能在运行时更改。

处理程序特定的配置数据由处理程序回调本身插入,位于名为config的字段关联的子结构中。有关这些处理程序的特定配置信息,请参阅logger_std_hlogger_disk_log_h手册页。

有关此格式化程序的默认配置信息,请参阅logger_formatter手册页。

-type id() :: atom().

处理程序实例的唯一标识符。

链接到此类型

olp_config()

查看源代码 (自 OTP 27.0 起)
-type olp_config() ::
          #{sync_mode_qlen => non_neg_integer(),
            drop_mode_qlen => pos_integer(),
            flush_qlen => pos_integer(),
            burst_limit_enable => boolean(),
            burst_limit_max_count => pos_integer(),
            burst_limit_window_time => pos_integer(),
            overload_kill_enable => boolean(),
            overload_kill_qlen => pos_integer(),
            overload_kill_mem_size => pos_integer(),
            overload_kill_restart_after => non_neg_integer() | infinity}.

过载保护配置。

有关更多详细信息,请参阅保护处理程序免受过载

回调

链接到此回调

adding_handler(Config1)

查看源代码 (可选) (自 OTP 21.0 起)
-callback adding_handler(Config1) -> {ok, Config2} | {error, Reason}
                            when Config1 :: config(), Config2 :: config(), Reason :: term().

当即将添加新处理程序时,在临时进程上调用该函数。目的是验证配置并启动处理程序所需的所有资源。

处理程序标识与Config1中的id键相关联。

如果一切成功,回调函数可以将可能的默认值或内部状态值添加到配置中,并在{ok,Config2}中返回调整后的映射。

如果配置错误或初始化失败,回调函数必须返回{error,Reason}

链接到此回调

changing_config(SetOrUpdate, OldConfig, NewConfig)

查看源代码 (可选) (自 OTP 21.2 起)
-callback changing_config(SetOrUpdate, OldConfig, NewConfig) -> {ok, Config} | {error, Reason}
                             when
                                 SetOrUpdate :: set | update,
                                 OldConfig :: config(),
                                 NewConfig :: config(),
                                 Config :: config(),
                                 Reason :: term().

当处理程序的配置即将更改时,在临时进程上调用该函数。目的是验证新配置并根据新配置采取行动。

OldConfig是现有配置,NewConfig是新配置。

处理程序标识与OldConfig中的id键相关联。

如果配置更改源自调用logger:set_handler_config/2,3,则SetOrUpdate的值为set;如果配置更改源自logger:update_handler_config/2,3,则值为update。处理程序可以使用此参数来决定如何更新config字段的值,即处理程序特定的配置数据。通常,如果SetOrUpdate等于set,则未指定的值必须给定其默认值。如果SetOrUpdate等于update,则必须使用在OldConfig中找到的值。

如果一切成功,回调函数必须在{ok,Config}中返回可能调整过的配置。

如果配置错误,回调函数必须返回{error,Reason}

链接到此回调

filter_config(Config)

查看源代码 (可选) (自 OTP 21.2 起)
-callback filter_config(Config) -> FilteredConfig when Config :: config(), FilteredConfig :: config().

当调用 Logger API 函数之一来获取处理程序配置时,会调用该函数,例如 logger:get_handler_config/1

它允许处理程序在将内部数据字段返回给调用者之前,从其配置数据中删除这些字段。

链接到此回调

log(LogEvent, Config)

查看源代码 (自 OTP 21.0 起)
-callback log(LogEvent, Config) -> term() when LogEvent :: logger:log_event(), Config :: config().

当给定日志事件的所有主过滤器和所有处理程序过滤器都通过时,会调用该函数。它在客户端进程上调用,也就是发出日志事件的进程。

处理程序标识与Config中的id键相关联。

处理程序必须记录事件。

Logger 会忽略此函数的返回值。

链接到此回调

removing_handler(Config)

查看源代码 (可选) (自 OTP 21.0 起)
-callback removing_handler(Config) -> ok when Config :: config().

当即将删除处理程序时,在临时进程上调用该函数。目的是释放处理程序使用的所有资源。

处理程序标识与Config中的id键相关联。

Logger 会忽略返回值。