1 个不稳定版本
0.1.0 | 2023年8月14日 |
---|
644 在 HTTP服务器
每月 99 次下载
46KB
825 行
actix-contrib-logger
为Actix Web框架提供的日志中间件。
实际上,它是从官方的Logger中间件中复制和粘贴的(原始源代码),但它允许根据HTTP状态码响应选择日志级别,默认情况下,服务器错误以ERROR
级别记录。(请参阅Logger::custom_level()
和Logger::custom_error_resp_level()
)。
此外,响应日志中的错误也可以配置,默认情况下在服务器端失败时以ERROR
级别记录。
Logger中间件使用标准log crate来记录信息。您需要为http_logger
启用日志记录才能看到访问日志(env_logger
或类似)。
示例
在下面的示例中,使用ERROR
级别记录服务器错误,使用WARN
级别记录HTTP 404响应(未找到),其余则使用INFO
级别。
use actix_contrib_logger::middleware::Logger;
use env_logger::Env;
use http::StatusCode;
use log::Level;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
use actix_web::{App, HttpServer};
env_logger::init_from_env(Env::default().default_filter_or("info"));
HttpServer::new(|| {
let logger = Logger::default()
.custom_level(|status| {
if status.is_server_error() {
Level::Error
} else if status == StatusCode::NOT_FOUND {
Level::Warn
} else {
Level::Info
}
});
App::new().wrap(logger)
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
请求日志将如下所示:
[2023-08-13T07:28:00Z INFO http_logger] 127.0.0.1 "GET / HTTP/1.1" 200 802 "-" "Mozilla/5.0 ..." 0.001985
[2023-08-13T07:29:10Z ERROR http_logger] 127.0.0.1 "POST /users HTTP/1.1" 500 86 "-" "curl/7.68.0" 0.002023
[2023-08-13T07:29:10Z WARN http_logger] 127.0.0.1 "PUT /users HTTP/1.1" 404 55 "-" "HTTPie/3.2.1" 0.002023
使用方法 logger.custom_error_resp_level()
可以配置响应中的错误日志级别,否则默认与原始的logger相同,所有日志都打印在 DEBUG
级别,除了服务器错误,服务器错误以 ERROR
级别打印。日志还包括HTTP状态信息(原始logger不包括)。例如:
[2023-08-13T20:59:53Z ERROR http_logger] Error in "500 Internal Server Error" response: DB(PoolTimedOut)
关于
项目主页: https://github.com/mrsarm/rust-actix-contrib-logger.
作者
- 原始作者:Actix项目创建了原始的
logger
模块。 - 本项目修改:Mariano Ruiz (mrsarm at gmail.com)。
许可证
本项目可选择以下任一许可证进行授权:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖
~17–28MB
~509K SLoC