wrap_log_reader
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)