feat: 加载环境变量和日志处理

This commit is contained in:
caoqianming 2024-06-12 15:12:04 +08:00
parent 31cdb47393
commit 60dda74a67
4 changed files with 170 additions and 48 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
/target
.env
logs/*

184
Cargo.lock generated
View File

@ -216,9 +216,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
version = "0.1.1"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chrono"
@ -308,6 +308,15 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crossbeam-channel"
version = "0.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.11"
@ -411,6 +420,12 @@ dependencies = [
"subtle",
]
[[package]]
name = "dotenv"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
[[package]]
name = "dotenvy"
version = "0.15.7"
@ -471,6 +486,16 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "etag"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b3d0661a2ccddc26cba0b834e9b717959ed6fdd76c7129ee159c170a875bf44"
dependencies = [
"str-buf",
"xxhash-rust",
]
[[package]]
name = "etcetera"
version = "0.8.0"
@ -752,6 +777,7 @@ name = "hfnf_api"
version = "0.1.0"
dependencies = [
"chrono",
"dotenv",
"once_cell",
"salvo",
"serde",
@ -760,6 +786,7 @@ dependencies = [
"sqlx",
"tokio",
"tracing",
"tracing-appender",
"tracing-subscriber",
]
@ -1184,9 +1211,9 @@ dependencies = [
[[package]]
name = "nix"
version = "0.28.0"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags 2.5.0",
"cfg-if",
@ -1504,30 +1531,6 @@ dependencies = [
"toml_edit",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn 1.0.109",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.84"
@ -1784,20 +1787,21 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "salvo"
version = "0.67.2"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9c3b8a19a979684f77dac4e4dd82422dde15a11f9e906a86f31ee6b6723a7c9"
checksum = "84cdee7d554e518e0537bc21f4369650b4e1c6977d75ed9b5f41b5df29287e00"
dependencies = [
"salvo-jwt-auth",
"salvo-proxy",
"salvo_core",
"salvo_extra",
]
[[package]]
name = "salvo-jwt-auth"
version = "0.67.2"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da5f53c0f28a93ae3add52425748ebf42d5e073178d2dffceb48fec5ff7ef459"
checksum = "3cc0edb93d343444aca0cb89de4be1129090573f5d072631fb82b893e53bbc09"
dependencies = [
"base64 0.22.1",
"bytes",
@ -1815,9 +1819,9 @@ dependencies = [
[[package]]
name = "salvo-proxy"
version = "0.67.2"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43cda3586fa13135e1e1db40373c4b0f2b08fe171b152e0a4fdae003e05cf959"
checksum = "7a0ed558af2b82d978e0800bb9e3a4e67ecc65dce39ce487c177351f3fb95f6a"
dependencies = [
"fastrand",
"futures-util",
@ -1833,11 +1837,10 @@ dependencies = [
[[package]]
name = "salvo-serde-util"
version = "0.67.2"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c209177b0fe85620dff6102d6ea8f8b1c2964560d053bb70c088b5f6c77610a0"
checksum = "c21c0e07fcf03e5515718437813e57e4868af5ad26a08e341be5cb52cfe71e3f"
dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.66",
@ -1845,9 +1848,9 @@ dependencies = [
[[package]]
name = "salvo_core"
version = "0.67.2"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b05989a88a3d5a6a178aee40cd9439890bcccb5c78cdd127def079ab19c371ec"
checksum = "fa66d41e1a3bcfd0e554eb16a49d100130e2773ae7ec5bdf82ef4ebcdb06babb"
dependencies = [
"async-trait",
"base64 0.22.1",
@ -1889,10 +1892,30 @@ dependencies = [
]
[[package]]
name = "salvo_macros"
version = "0.67.2"
name = "salvo_extra"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "899f4bcf047987eae63d497226c6b56473b53db827cccee3fb08f7bbc252aaa6"
checksum = "b0fe3f49052570e7407a94b59333d20f484fa942a3879df0d2155b004b7a3c71"
dependencies = [
"base64 0.22.1",
"etag",
"futures-util",
"hyper",
"pin-project",
"salvo_core",
"serde",
"serde_json",
"tokio",
"tokio-tungstenite",
"tracing",
"ulid",
]
[[package]]
name = "salvo_macros"
version = "0.68.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7930ba24f36bdd6f5e689a655f1686a6f82145cc89b62c36fd945ec8c08fdd01"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@ -2338,6 +2361,12 @@ dependencies = [
"urlencoding",
]
[[package]]
name = "str-buf"
version = "3.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ceb97b7225c713c2fd4db0153cb6b3cab244eb37900c3f634ed4d43310d8c34"
[[package]]
name = "stringprep"
version = "0.1.5"
@ -2564,6 +2593,18 @@ dependencies = [
"tokio",
]
[[package]]
name = "tokio-tungstenite"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "becd34a233e7e31a3dbf7c7241b38320f57393dcae8e7324b0167d21b8e320b0"
dependencies = [
"futures-util",
"log",
"tokio",
"tungstenite",
]
[[package]]
name = "tokio-util"
version = "0.7.11"
@ -2633,6 +2674,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"
@ -2685,12 +2738,37 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "tungstenite"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8"
dependencies = [
"byteorder",
"bytes",
"log",
"rand",
"thiserror",
"utf-8",
]
[[package]]
name = "typenum"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "ulid"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34778c17965aa2a08913b57e1f34db9b4a63f5de31768b55bf20d2795f921259"
dependencies = [
"getrandom",
"rand",
"web-time",
]
[[package]]
name = "unicase"
version = "2.7.0"
@ -2772,6 +2850,12 @@ version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
[[package]]
name = "utf-8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
[[package]]
name = "valuable"
version = "0.1.0"
@ -2900,6 +2984,16 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "web-time"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "whoami"
version = "1.5.1"
@ -3105,6 +3199,12 @@ version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
[[package]]
name = "xxhash-rust"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
[[package]]
name = "zerocopy"
version = "0.7.34"

View File

@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
salvo = "0.67"
salvo = { version = "0.68", features = ["logging"]}
tokio = { version = "1", features = ["macros"] }
tracing = "0.1"
tracing-subscriber = "0.3"
@ -14,3 +14,5 @@ serde_json = "1.0.117"
once_cell = "1.19.0"
chrono = { version = "0.4", features = ["serde"] }
serde_with = "3.8.1"
dotenv = "0.15.0"
tracing-appender = "0.2.3"

View File

@ -1,8 +1,18 @@
use chrono::{DateTime, Utc, FixedOffset};
use once_cell::sync::OnceCell;
use salvo::logging::Logger;
use salvo::prelude::*;
use serde::{Deserialize, Serialize, Serializer};
use sqlx::{FromRow, PgPool};
use std::env;
use dotenv::dotenv;
use tracing::level_filters::LevelFilter;
use tracing_subscriber::{
fmt::{self},
layer::SubscriberExt,
util::SubscriberInitExt,
Layer,
};
static POSTGRES: OnceCell<PgPool> = OnceCell::new();
@ -44,13 +54,21 @@ async fn get_mplogx(req: &mut Request, res: &mut Response) {
#[tokio::main]
async fn main() {
tracing_subscriber::fmt().init();
dotenv().ok();
let console = fmt::Layer::new().with_ansi(false).pretty();
let file_appender = tracing_appender::rolling::daily("./logs", "api_log");
let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);
let file = fmt::Layer::new().with_ansi(false).pretty().with_writer(non_blocking).with_filter(LevelFilter::WARN);
let db_url = "postgresql+psycopg2://postgres:zcDsj2021@49.232.14.174:5432/hfnf";
let pool = PgPool::connect(db_url).await.unwrap();
tracing_subscriber::registry().with(console).with(file).init();
let db_url = env::var("DB_URL").expect("DB_URL must be set");
let pool = PgPool::connect(&db_url).await.unwrap();
POSTGRES.set(pool).unwrap();
let router = Router::with_path("mplogx").post(get_mplogx);
let acceptor = TcpListener::new("127.0.0.1:5800").bind().await;
Server::new(acceptor).serve(router).await;
let service = Service::new(router).hoop(Logger::new());
let acceptor = TcpListener::new("0.0.0.0:5800").bind().await;
Server::new(acceptor).serve(service).await;
}