2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2016年8月6日 |
---|---|
0.1.0 | 2016年8月6日 |
#101 in #log-level
10KB
163 行
rust-http-logger
[ (https://img.shields.io/crates/v/rust-http-logger.svg)](https://crates.io/crates/rust-http-logger)
从客户端JS记录到服务器的HTTP服务器(到文件中)。
服务器接受JSON或HTML表单POST数据
POST:
error=my data&info=another data&debug=debug data
JSON(别忘了添加Content-type: application/json)
{
"error":"Some error happened: TRACEBACK ... ",
"info":"This user is suspicious",
"warning":"Oh, this happened, beware!",
"debug":"NOOO BUGs, BUGs everywhere!"
}
用法
rust-http-logger localhost:3000 api.log
现在服务器正在您的机器上的端口3000上接受传入连接,并将数据记录到api.log
。要测试此功能,您可以使用curl
。
curl -X POST -d "error=my data" https://127.0.0.1:3000/log/
您将获得如下JSON响应
{"success":{"error":"51"},"errors":{}}
这意味着我们成功地将51B写入到错误日志级别的日志文件中。如果有错误,将在JSON结构的"错误"键中显示。
api.log
文件应包含
[2016-08-06 13:34:04.091372 +02:00] [ERROR] my data
安装
最好的方法是安装rust
并自己编译二进制文件。在Releases
部分有一些预构建的二进制文件。
性能
在我的Macbook Air机器上使用wrk
,大约7k个请求/秒,有1000个并发连接。
wrk -d60s -c1000 -t100 -s wrk-script.lua http://localhost:3000/log/
Running 1m test @ http://localhost:3000/log/
100 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.34ms 1.52ms 67.08ms 93.87%
Req/Sec 273.68 101.64 660.00 79.48%
428271 requests in 1.00m, 73.52MB read
Socket errors: connect 0, read 1702, write 0, timeout 0
Requests/sec: 7125.67
Transfer/sec: 1.22MB
wrk-script.lua
wrk.scheme = "http"
wrk.host = "localhost"
wrk.port = 3000
wrk.method = "POST"
wrk.path = "/log/"
wrk.headers["Content-Type"] = "application/json"
wrk.body = [[{
"error":"OHH performance",
"info":"much information, very wow",
"warning":"so warn, much very wow",
"debug":"oh the debugs, so many debugs"
}]]
依赖项
~13MB
~266K SLoC