5个版本 (2个稳定版)
使用旧的Rust 2015
2.0.0 | 2017年4月30日 |
---|---|
1.0.0 | 2016年2月15日 |
0.99.0 | 2016年2月15日 |
#34 in #log-parser
45KB
968 代码行
#ELP - AWS ELB访问日志解析器
ELP是一个简单的AWS ELB访问日志解析器。
有关更多信息,请参阅访问日志文档。
友好待人,向他人学习。
本项目支持Rust行为准则。
文档
##如何使用
在此处有一个ELP在生产环境中使用的完整示例。
将ELP添加为依赖项。在您的Cargo.toml
中添加以下内容:
[dependencies]
elp = "1.0.0"
然后将其作为外部crate在您的代码中引用。
extern crate elp;
以下是一个使用ELP工具方法获取目录中所有ELB访问日志路径(递归)并将解析结果写入stdout的简短程序。
extern crate elp;
fn main() {
let mut filenames = Vec::new();
// Get a list of files from a directory specified by the user.
match elp::file_list(log_location, &mut filenames) {
// If walking the directory succeeds
Ok(_) => {
// Attempt to parse each record in each file passing the result to
// a user defined result handler.
elp::process_files(&filenames, &mut |parsing_result: ParsingResult| {
println!("{:?}", parsing_result);
});
std::process::exit(0);
},
Err(e) => {
println!("The following error occurred while trying to get the list of files. {}", e);
std::process::exit(1);
},
}
这部分主要是标准的Rust代码。值得注意的唯一ELP特定代码是处理器。
尝试解析每条记录。每个记录尝试解析的结果将传递给用户定义的处理函数,其函数签名如下。
FnMut(ParsingResult) -> ()
检查错误由用户负责。
为什么使用处理器而不是返回Vec或其他ELBRecord集合?
如果您运行流量大的ELB,您每天可以轻松地生成数百万条记录。在内存中存储记录并返回它们对于高负载ELB来说不可行。通过提供每个记录都将传递的处理程序,用户可以决定如何处理每个记录,无论是将其存储在内存中还是写入磁盘。
依赖项
~2.5MB
~41K SLoC