feat: redirect stderr to stderr log file (#494)
Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
parent
59fb6b2ad5
commit
af555c337c
|
|
@ -959,7 +959,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client"
|
name = "dragonfly-client"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
|
@ -1012,7 +1012,7 @@ dependencies = [
|
||||||
"tower",
|
"tower",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-appender",
|
"tracing-appender",
|
||||||
"tracing-log 0.1.4",
|
"tracing-log 0.2.0",
|
||||||
"tracing-opentelemetry",
|
"tracing-opentelemetry",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
"url",
|
"url",
|
||||||
|
|
@ -1022,7 +1022,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-backend"
|
name = "dragonfly-client-backend"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dragonfly-client-core",
|
"dragonfly-client-core",
|
||||||
"futures",
|
"futures",
|
||||||
|
|
@ -1040,7 +1040,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-config"
|
name = "dragonfly-client-config"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dragonfly-client-core",
|
"dragonfly-client-core",
|
||||||
"home",
|
"home",
|
||||||
|
|
@ -1059,7 +1059,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-core"
|
name = "dragonfly-client-core"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libloading",
|
"libloading",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
|
@ -1070,7 +1070,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-init"
|
name = "dragonfly-client-init"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
|
|
@ -1086,7 +1086,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-storage"
|
name = "dragonfly-client-storage"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base16ct",
|
"base16ct",
|
||||||
"blake3",
|
"blake3",
|
||||||
|
|
@ -1110,7 +1110,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dragonfly-client-util"
|
name = "dragonfly-client-util"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dragonfly-api",
|
"dragonfly-api",
|
||||||
"dragonfly-client-core",
|
"dragonfly-client-core",
|
||||||
|
|
@ -1568,7 +1568,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hdfs"
|
name = "hdfs"
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dragonfly-client-backend",
|
"dragonfly-client-backend",
|
||||||
"dragonfly-client-core",
|
"dragonfly-client-core",
|
||||||
|
|
|
||||||
16
Cargo.toml
16
Cargo.toml
|
|
@ -12,7 +12,7 @@ members = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.1.69"
|
version = "0.1.70"
|
||||||
authors = ["The Dragonfly Developers"]
|
authors = ["The Dragonfly Developers"]
|
||||||
homepage = "https://d7y.io/"
|
homepage = "https://d7y.io/"
|
||||||
repository = "https://github.com/dragonflyoss/client.git"
|
repository = "https://github.com/dragonflyoss/client.git"
|
||||||
|
|
@ -22,13 +22,13 @@ readme = "README.md"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
dragonfly-client = { path = "dragonfly-client", version = "0.1.69" }
|
dragonfly-client = { path = "dragonfly-client", version = "0.1.70" }
|
||||||
dragonfly-client-core = { path = "dragonfly-client-core", version = "0.1.69" }
|
dragonfly-client-core = { path = "dragonfly-client-core", version = "0.1.70" }
|
||||||
dragonfly-client-config = { path = "dragonfly-client-config", version = "0.1.69" }
|
dragonfly-client-config = { path = "dragonfly-client-config", version = "0.1.70" }
|
||||||
dragonfly-client-storage = { path = "dragonfly-client-storage", version = "0.1.69" }
|
dragonfly-client-storage = { path = "dragonfly-client-storage", version = "0.1.70" }
|
||||||
dragonfly-client-backend = { path = "dragonfly-client-backend", version = "0.1.69" }
|
dragonfly-client-backend = { path = "dragonfly-client-backend", version = "0.1.70" }
|
||||||
dragonfly-client-util = { path = "dragonfly-client-util", version = "0.1.69" }
|
dragonfly-client-util = { path = "dragonfly-client-util", version = "0.1.70" }
|
||||||
dragonfly-client-init = { path = "dragonfly-client-init", version = "0.1.69" }
|
dragonfly-client-init = { path = "dragonfly-client-init", version = "0.1.70" }
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
dragonfly-api = "2.0.113"
|
dragonfly-api = "2.0.113"
|
||||||
reqwest = { version = "0.11.27", features = ["stream", "native-tls", "default-tls", "rustls-tls"] }
|
reqwest = { version = "0.11.27", features = ["stream", "native-tls", "default-tls", "rustls-tls"] }
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ http.workspace = true
|
||||||
openssl.workspace = true
|
openssl.workspace = true
|
||||||
clap.workspace = true
|
clap.workspace = true
|
||||||
anyhow.workspace = true
|
anyhow.workspace = true
|
||||||
tracing-log = "0.1"
|
tracing-log = "0.2"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||||
tracing-appender = "0.2.3"
|
tracing-appender = "0.2.3"
|
||||||
tracing-opentelemetry = "0.18.0"
|
tracing-opentelemetry = "0.18.0"
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use opentelemetry::sdk::propagation::TraceContextPropagator;
|
use opentelemetry::sdk::propagation::TraceContextPropagator;
|
||||||
use std::path::PathBuf;
|
use std::fs::OpenOptions;
|
||||||
|
use std::os::unix::io::AsRawFd;
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
use tracing::{info, Level};
|
use tracing::{info, Level};
|
||||||
use tracing_appender::non_blocking::WorkerGuard;
|
use tracing_appender::non_blocking::WorkerGuard;
|
||||||
use tracing_appender::rolling::{RollingFileAppender, Rotation};
|
use tracing_appender::rolling::{RollingFileAppender, Rotation};
|
||||||
|
|
@ -71,16 +73,16 @@ pub fn init_tracing(
|
||||||
.with_thread_names(false)
|
.with_thread_names(false)
|
||||||
.with_thread_ids(false)
|
.with_thread_ids(false)
|
||||||
.compact();
|
.compact();
|
||||||
|
|
||||||
guards.push(rolling_writer_guard);
|
guards.push(rolling_writer_guard);
|
||||||
|
|
||||||
|
// Setup env filter for log level.
|
||||||
let env_filter = EnvFilter::try_from_default_env()
|
let env_filter = EnvFilter::try_from_default_env()
|
||||||
.unwrap_or_else(|_| EnvFilter::default().add_directive(log_level.into()));
|
.unwrap_or_else(|_| EnvFilter::default().add_directive(log_level.into()));
|
||||||
|
|
||||||
let subscriber = Registry::default()
|
let subscriber = Registry::default()
|
||||||
.with(env_filter)
|
.with(env_filter)
|
||||||
.with(stdout_logging_layer)
|
.with(file_logging_layer)
|
||||||
.with(file_logging_layer);
|
.with(stdout_logging_layer);
|
||||||
|
|
||||||
// Setup jaeger layer.
|
// Setup jaeger layer.
|
||||||
if let Some(jaeger_addr) = jaeger_addr {
|
if let Some(jaeger_addr) = jaeger_addr {
|
||||||
|
|
@ -108,5 +110,22 @@ pub fn init_tracing(
|
||||||
log_level
|
log_level
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Redirect stderr to file.
|
||||||
|
redirect_stderr_to_file(log_dir);
|
||||||
|
|
||||||
guards
|
guards
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Redirect stderr to file.
|
||||||
|
fn redirect_stderr_to_file(log_dir: &Path) {
|
||||||
|
let log_path = log_dir.join("stderr.log");
|
||||||
|
let file = OpenOptions::new()
|
||||||
|
.create(true)
|
||||||
|
.append(true)
|
||||||
|
.open(log_path)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
libc::dup2(file.as_raw_fd(), libc::STDERR_FILENO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue