非常教程

Erlang 20参考手册

核心 | kernel

wrap_log_reader

模块

wrap_log_reader

模块摘要

用于读取内部格式化的换行磁盘日志的服务。

描述

此模块可以读取内部格式化的换盘日志,请参阅disk_log(3)wrap_log_reader不干扰disk_log活动; 然而,这个版本中有一个错误wrap_log_reader,请参阅部分Known Limitations

包装磁盘日志文件由许多称为索引文件的文件组成。日志文件可以打开和关闭。另外,单个索引文件可以单独打开。如果打开不存在或非内部格式的文件,则返回错误消息。如果文件损坏,则不会尝试修复它,但会返回错误消息。

如果将日志配置为分发,则可能所有项目都未记录在所有节点上。wrap_log_reader只读取被叫节点上的日志; 用户必须确保所有项目都被读取。

数据类型

continuation()

open/1,2或者返回的继续chunk/1,2

出口

chunk(Continuation) -> chunk_ret()

chunk(Continuation, N) -> chunk_ret()

类型

可以有效地读取附加到日志的条款。通过从文件中读取64千字节块,使磁盘I/O最小化。

第一次chunk()被称为,从open/1或返回的初始延续或open/2必须提供。

chunk/3被调用,N控制了从日志中每个块阅读方面的最大数量。默认为infinity,这意味着读取8K块中包含的所有术语。如果N返回少于条件,这并不一定意味着文件结束。

返回一个元组{Continuation2, Terms},其中Terms是在日志中找到的术语列表。Continuation2是另一个必须传递给任何后续呼叫的延续chunk()。通过一系列调用chunk(),可以从日志中提取所有条款。

返回元组{Continuation2, Terms, Badbytes}如果日志以只读模式打开,且读取块已损坏。Badbytes指示在块中找到的非Erlang项的数目。注意日志没有修复。

回报{Continuation2, eof}当到达日志的末尾时,以及{error, Reason}如果发生错误。

返回的延续或者在下次调用此函数时有效或无效。这是因为日志可以包装和删除延续指向的文件。为确保不会发生这种情况,可以在搜索过程中阻止日志。

close(Continuation) -> ok | {error, Reason}

类型

正确关闭日志文件。

open(Filename) -> open_ret()

open(Filename, N) -> open_ret()

类型

Filename 指定要读取的文件的名称。

N指定要读取的文件的索引。如果N省略,则读取整个换行日志文件; 如果指定,则只读取指定的索引文件。

如果成功打开日志/索引文件,则返回{ok, Continuation}Continuation将在分块或关闭文件时使用。

回报{error, Reason}所有的错误。

已知限制

此版本wrap_log_reader不检测是否disk_log在呼叫wrap_log_reader:open()和第一次呼叫之间换行到新的索引文件wrap_log_reader:chunk()。如果发生这种情况,则调用以chunk()读取日志文件中最后记录的项目作为打开的索引文件被截断disk_log

另见

disk_log(3)

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1