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)
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

