日志构建逻辑调整

This commit is contained in:
胡天 2024-02-02 16:23:11 +08:00
parent 246c17ba39
commit 2d8b593c4d
4 changed files with 100 additions and 1 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/target
/logs

74
Cargo.lock generated
View File

@ -220,6 +220,7 @@ dependencies = [
"sqlx",
"tokio",
"tracing",
"tracing-appender",
"tracing-subscriber",
]
@ -392,6 +393,15 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crossbeam-channel"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.11"
@ -428,6 +438,15 @@ dependencies = [
"zeroize",
]
[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]
[[package]]
name = "digest"
version = "0.10.7"
@ -1077,6 +1096,12 @@ dependencies = [
"zeroize",
]
[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num-integer"
version = "0.1.45"
@ -1303,6 +1328,12 @@ version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@ -1998,6 +2029,37 @@ dependencies = [
"once_cell",
]
[[package]]
name = "time"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe80ced77cbfb4cb91a94bf72b378b4b6791a0d9b7f09d0be747d1bdff4e68bd"
dependencies = [
"deranged",
"itoa",
"num-conv",
"powerfmt",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
dependencies = [
"num-conv",
"time-core",
]
[[package]]
name = "tinyvec"
version = "1.6.0"
@ -2117,6 +2179,18 @@ dependencies = [
"tracing-core",
]
[[package]]
name = "tracing-appender"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf"
dependencies = [
"crossbeam-channel",
"thiserror",
"time",
"tracing-subscriber",
]
[[package]]
name = "tracing-attributes"
version = "0.1.27"

View File

@ -16,4 +16,5 @@ serde_json = "1.0.113"
sqlx = { version = "0.7.3", features = ["mysql", "runtime-tokio", "tls-rustls", "chrono", "macros"] }
tokio = { version = "1.35.1", features = ["full"] }
tracing = "0.1.40"
tracing-appender = "0.2.3"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }

View File

@ -4,15 +4,38 @@ use axum::Router;
use axum::routing::get;
use sqlx::mysql::MySqlPoolOptions;
use tokio::signal;
use tracing_appender::{rolling, non_blocking};
use tracing_subscriber::{EnvFilter, fmt, layer::SubscriberExt, util::SubscriberInitExt};
use axum_sqlx::{config::AppConfig, handler, model::state::AppState};
fn init_tracing_logger() {
// 设置日志级别 根据RUST_LOG
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
// 输出到文件中(按天分割)
let file_appender = rolling::daily("logs", "app.log");
// 非阻塞
let (non_blocking_appender, _guard) = non_blocking(file_appender);
// 构建layer
let file_layer = fmt::layer()
.with_ansi(false)
.with_writer(non_blocking_appender);
tracing_subscriber::registry()
.with(env_filter)
.with(fmt::layer())
.with(file_layer)
.init();
}
#[tokio::main]
async fn main() {
// 解析 .env 文件
dotenvy::dotenv().expect("解析.env文件失败");
tracing_subscriber::fmt::init();
init_tracing_logger();
let cfg = AppConfig::new()
.map_err(|e| tracing::error!("初始化配置失败:{}", e.to_string()))