tracing
This commit is contained in:
2
rust/Cargo.lock
generated
2
rust/Cargo.lock
generated
@@ -2388,6 +2388,8 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-attributes"
|
name = "tracing-attributes"
|
||||||
version = "0.1.26"
|
version = "0.1.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|||||||
@@ -62,9 +62,6 @@ version = "0.1"
|
|||||||
[dependencies.tracing-attributes]
|
[dependencies.tracing-attributes]
|
||||||
version = "0.1"
|
version = "0.1"
|
||||||
|
|
||||||
[patch.crates-io]
|
|
||||||
tracing-attributes = { path = "./tracing/tracing-attributes" }
|
|
||||||
|
|
||||||
[dependencies.tracing-subscriber]
|
[dependencies.tracing-subscriber]
|
||||||
version = "0.3"
|
version = "0.3"
|
||||||
features = ["json", "env-filter"]
|
features = ["json", "env-filter"]
|
||||||
|
|||||||
@@ -43,13 +43,14 @@ async fn simple_handler(State(state): State<AppState>) -> &'static str {
|
|||||||
SqlitePoolOptions::new()
|
SqlitePoolOptions::new()
|
||||||
.max_connections(5)
|
.max_connections(5)
|
||||||
.connect_with(
|
.connect_with(
|
||||||
SqliteConnectOptions::from_str("/tmp/tmp.SmE1WKBVMf")
|
SqliteConnectOptions::from_str("/tmp/tmp.JKl26kmKW5")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.log_statements(log::LevelFilter::Warn)
|
.log_statements(log::LevelFilter::Warn)
|
||||||
.log_slow_statements(
|
.log_slow_statements(
|
||||||
log::LevelFilter::Warn,
|
log::LevelFilter::Warn,
|
||||||
std::time::Duration::from_millis(100),
|
std::time::Duration::from_millis(100),
|
||||||
)
|
)
|
||||||
|
.tracing_span(tracing::warn_span!("packager::sqlx"))
|
||||||
.pragma("foreign_keys", "1"),
|
.pragma("foreign_keys", "1"),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
@@ -66,7 +67,7 @@ async fn simple_handler(State(state): State<AppState>) -> &'static str {
|
|||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
// .instrument(tracing::warn_span!("test_span"))
|
.instrument(tracing::warn_span!("packager::sqlx"))
|
||||||
.await;
|
.await;
|
||||||
"ok"
|
"ok"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ pub async fn init_database_pool(url: &str) -> Result<Pool<Sqlite>, StartError> {
|
|||||||
SqliteConnectOptions::from_str(url)?
|
SqliteConnectOptions::from_str(url)?
|
||||||
.log_statements(log::LevelFilter::Debug)
|
.log_statements(log::LevelFilter::Debug)
|
||||||
.log_slow_statements(log::LevelFilter::Warn, time::Duration::from_millis(100))
|
.log_slow_statements(log::LevelFilter::Warn, time::Duration::from_millis(100))
|
||||||
|
.tracing_span(tracing::info_span!("sqlx_pool"))
|
||||||
.pragma("foreign_keys", "1"),
|
.pragma("foreign_keys", "1"),
|
||||||
)
|
)
|
||||||
.await?)
|
.await?)
|
||||||
@@ -30,7 +31,8 @@ pub async fn migrate(url: &str) -> Result<(), StartError> {
|
|||||||
.connect_with(
|
.connect_with(
|
||||||
SqliteConnectOptions::from_str(url)?
|
SqliteConnectOptions::from_str(url)?
|
||||||
.pragma("foreign_keys", "0")
|
.pragma("foreign_keys", "0")
|
||||||
.log_statements(log::LevelFilter::Warn),
|
.log_statements(log::LevelFilter::Warn)
|
||||||
|
.tracing_span(tracing::info_span!("sqlx_migration")),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use http::Request;
|
|||||||
use tower_http::{classify::ServerErrorsFailureClass, trace::TraceLayer};
|
use tower_http::{classify::ServerErrorsFailureClass, trace::TraceLayer};
|
||||||
use tracing::{Span, Subscriber};
|
use tracing::{Span, Subscriber};
|
||||||
|
|
||||||
use tracing_log::LogTracer;
|
use tracing::Instrument;
|
||||||
use tracing_subscriber::{
|
use tracing_subscriber::{
|
||||||
filter::{LevelFilter, Targets},
|
filter::{LevelFilter, Targets},
|
||||||
fmt::{
|
fmt::{
|
||||||
@@ -52,14 +52,14 @@ where
|
|||||||
|
|
||||||
write!(
|
write!(
|
||||||
&mut writer,
|
&mut writer,
|
||||||
"{}\t{}:\t",
|
"\n{}\t{}:\t",
|
||||||
metadata.level(),
|
metadata.level(),
|
||||||
metadata.target()
|
metadata.target()
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
if let Some(scope) = ctx.event_scope() {
|
if let Some(scope) = ctx.event_scope() {
|
||||||
for span in scope.from_root() {
|
for span in scope.from_root() {
|
||||||
write!(writer, "span: {}\t", span.metadata().name())?;
|
write!(writer, "span: {:?} {:?}\t", span.metadata(), span.id())?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
write!(writer, "NO SPAN\t")?;
|
write!(writer, "NO SPAN\t")?;
|
||||||
@@ -103,11 +103,16 @@ where
|
|||||||
.with_default(LevelFilter::WARN)
|
.with_default(LevelFilter::WARN)
|
||||||
.with_targets(vec![
|
.with_targets(vec![
|
||||||
(env!("CARGO_PKG_NAME"), LevelFilter::DEBUG),
|
(env!("CARGO_PKG_NAME"), LevelFilter::DEBUG),
|
||||||
("request", LevelFilter::DEBUG),
|
|
||||||
("runtime", LevelFilter::OFF),
|
("runtime", LevelFilter::OFF),
|
||||||
("sqlx", LevelFilter::TRACE),
|
("sqlx", LevelFilter::TRACE),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
let stdout_filter = Targets::new()
|
||||||
|
.with_default(LevelFilter::TRACE)
|
||||||
|
.with_targets(vec![("runtime", LevelFilter::OFF)])
|
||||||
|
.with_targets(vec![("tokio", LevelFilter::OFF)])
|
||||||
|
.with_targets(vec![("hyper", LevelFilter::OFF)]);
|
||||||
|
|
||||||
let stdout_layer = stdout_layer.with_filter(stdout_filter);
|
let stdout_layer = stdout_layer.with_filter(stdout_filter);
|
||||||
|
|
||||||
let console_layer = match tokio_console_config {
|
let console_layer = match tokio_console_config {
|
||||||
@@ -125,8 +130,7 @@ where
|
|||||||
.with_service_name(env!("CARGO_PKG_NAME"))
|
.with_service_name(env!("CARGO_PKG_NAME"))
|
||||||
.with_max_packet_size(20_000)
|
.with_max_packet_size(20_000)
|
||||||
.with_auto_split_batch(true)
|
.with_auto_split_batch(true)
|
||||||
// .install_batch(Tokio)
|
.install_batch(Tokio)
|
||||||
.install_simple()
|
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let opentelemetry_filter = {
|
let opentelemetry_filter = {
|
||||||
@@ -134,9 +138,9 @@ where
|
|||||||
.with_default(LevelFilter::DEBUG)
|
.with_default(LevelFilter::DEBUG)
|
||||||
.with_targets(vec![
|
.with_targets(vec![
|
||||||
(env!("CARGO_PKG_NAME"), LevelFilter::DEBUG),
|
(env!("CARGO_PKG_NAME"), LevelFilter::DEBUG),
|
||||||
("request", LevelFilter::DEBUG),
|
|
||||||
("runtime", LevelFilter::OFF),
|
("runtime", LevelFilter::OFF),
|
||||||
("sqlx", LevelFilter::DEBUG),
|
("tokio", LevelFilter::OFF),
|
||||||
|
("sqlx", LevelFilter::TRACE),
|
||||||
])
|
])
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -171,7 +175,9 @@ where
|
|||||||
|
|
||||||
tracing_log::log_tracer::Builder::new().init().unwrap();
|
tracing_log::log_tracer::Builder::new().init().unwrap();
|
||||||
|
|
||||||
let result = f(args).await;
|
let result = f(args)
|
||||||
|
.instrument(tracing::debug_span!(target: env!("CARGO_PKG_NAME"), env!("CARGO_PKG_NAME")))
|
||||||
|
.await;
|
||||||
|
|
||||||
for shutdown_func in shutdown_functions {
|
for shutdown_func in shutdown_functions {
|
||||||
shutdown_func().unwrap();
|
shutdown_func().unwrap();
|
||||||
@@ -188,13 +194,12 @@ impl fmt::Display for Latency {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn init_request_tracing(router: Router) -> Router {
|
pub fn init_request_tracing(router: Router) -> Router {
|
||||||
return router;
|
|
||||||
router.layer(
|
router.layer(
|
||||||
TraceLayer::new_for_http()
|
TraceLayer::new_for_http()
|
||||||
.make_span_with(|_request: &Request<_>| {
|
.make_span_with(|_request: &Request<_>| {
|
||||||
let request_id = Uuid::new_v4();
|
let request_id = Uuid::new_v4();
|
||||||
tracing::debug_span!(
|
tracing::debug_span!(
|
||||||
target: "request",
|
target: "packager::request",
|
||||||
"request",
|
"request",
|
||||||
%request_id,
|
%request_id,
|
||||||
)
|
)
|
||||||
@@ -203,7 +208,7 @@ pub fn init_request_tracing(router: Router) -> Router {
|
|||||||
let request_headers = request.headers();
|
let request_headers = request.headers();
|
||||||
let http_version = request.version();
|
let http_version = request.version();
|
||||||
tracing::debug!(
|
tracing::debug!(
|
||||||
target: "request",
|
target: "packager::request",
|
||||||
method = request.method().as_str(),
|
method = request.method().as_str(),
|
||||||
path = request.uri().path(),
|
path = request.uri().path(),
|
||||||
?http_version,
|
?http_version,
|
||||||
@@ -216,7 +221,7 @@ pub fn init_request_tracing(router: Router) -> Router {
|
|||||||
let response_headers = response.headers();
|
let response_headers = response.headers();
|
||||||
let latency = Latency(latency);
|
let latency = Latency(latency);
|
||||||
tracing::debug!(
|
tracing::debug!(
|
||||||
target: "request",
|
target: "packager::request",
|
||||||
%latency,
|
%latency,
|
||||||
status = response.status().as_str(),
|
status = response.status().as_str(),
|
||||||
?response_headers,
|
?response_headers,
|
||||||
@@ -230,7 +235,7 @@ pub fn init_request_tracing(router: Router) -> Router {
|
|||||||
match error {
|
match error {
|
||||||
ServerErrorsFailureClass::StatusCode(code) => {
|
ServerErrorsFailureClass::StatusCode(code) => {
|
||||||
tracing::error!(
|
tracing::error!(
|
||||||
target: "request",
|
target: "packager::request",
|
||||||
%latency,
|
%latency,
|
||||||
"request failed with error response {}",
|
"request failed with error response {}",
|
||||||
code,
|
code,
|
||||||
@@ -238,7 +243,7 @@ pub fn init_request_tracing(router: Router) -> Router {
|
|||||||
}
|
}
|
||||||
ServerErrorsFailureClass::Error(message) => {
|
ServerErrorsFailureClass::Error(message) => {
|
||||||
tracing::error!(
|
tracing::error!(
|
||||||
target: "request",
|
target: "packager::request",
|
||||||
%latency,
|
%latency,
|
||||||
"request failed: {}",
|
"request failed: {}",
|
||||||
message,
|
message,
|
||||||
|
|||||||
Submodule rust/tracing deleted from 430206459b
Reference in New Issue
Block a user