From 346f119b52c0fc858d75939f4095d82ec77a3c9f Mon Sep 17 00:00:00 2001 From: NaturalSelect <2145973003@qq.com> Date: Mon, 6 Nov 2023 17:39:51 +0800 Subject: [PATCH] fix: fix error log bug by redirect fd Signed-off-by: NaturalSelect <2145973003@qq.com> --- curvefs/src/mds/main.cpp | 4 +++- curvefs/src/metaserver/main.cpp | 1 + src/chunkserver/chunkserver.cpp | 3 ++- src/common/log_util.cc | 27 +++++++++++++++++++++++++++ src/common/log_util.h | 11 +++++++++++ src/mds/main/main.cpp | 3 ++- src/snapshotcloneserver/main.cpp | 3 ++- 7 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 src/common/log_util.cc create mode 100644 src/common/log_util.h diff --git a/curvefs/src/mds/main.cpp b/curvefs/src/mds/main.cpp index 725c29e89c..c0e983a78f 100644 --- a/curvefs/src/mds/main.cpp +++ b/curvefs/src/mds/main.cpp @@ -25,6 +25,7 @@ #include "curvefs/src/mds/mds.h" #include "src/common/configuration.h" +#include "src/common/log_util.h" #include "curvefs/src/common/dynamic_vlog.h" using ::curve::common::Configuration; @@ -64,7 +65,8 @@ int main(int argc, char **argv) { } // initialize logging module - google::InitGoogleLogging(argv[0]); + FLAGS_logtostderr = false; + curve::common::InitGoogleLogging(argv[0]); conf->PrintConfig(); diff --git a/curvefs/src/metaserver/main.cpp b/curvefs/src/metaserver/main.cpp index ec390ab951..70b922cf91 100644 --- a/curvefs/src/metaserver/main.cpp +++ b/curvefs/src/metaserver/main.cpp @@ -126,6 +126,7 @@ int main(int argc, char **argv) { FLAGS_vlog_level = FLAGS_v; // initialize logging module + FLAGS_logtostderr = false; google::InitGoogleLogging(argv[0]); conf->PrintConfig(); diff --git a/src/chunkserver/chunkserver.cpp b/src/chunkserver/chunkserver.cpp index 784628447f..86718f75af 100644 --- a/src/chunkserver/chunkserver.cpp +++ b/src/chunkserver/chunkserver.cpp @@ -105,7 +105,8 @@ int ChunkServer::Run(int argc, char** argv) { LoadConfigFromCmdline(&conf); // 初始化日志模块 - google::InitGoogleLogging(argv[0]); + FLAGS_logtostderr = false; + curve::common::InitGoogleLogging(argv[0]); // 打印参数 conf.PrintConfig(); diff --git a/src/common/log_util.cc b/src/common/log_util.cc new file mode 100644 index 0000000000..3dc732e14f --- /dev/null +++ b/src/common/log_util.cc @@ -0,0 +1,27 @@ +#include "src/common/log_util.h" + +#include +#include +#include +#include + +static int DisableStderr() { + // NOTE: use "/dev/stderr" to reopen stderr fd + int fd = ::open("/dev/null",O_APPEND|O_WRONLY); + if (fd == -1) { + return -1; + } + int r = ::dup2(fd,::fileno(stderr)); + if (r == -1) { + return r; + } + ::close(fd); + return 0; +} + +void curve::common::InitGoogleLogging(const char *argv0) { + if (!FLAGS_logtostderr && !FLAGS_alsologtostderr) { + DisableStderr(); + } + google::InitGoogleLogging(argv0); +} \ No newline at end of file diff --git a/src/common/log_util.h b/src/common/log_util.h new file mode 100644 index 0000000000..525d9e2572 --- /dev/null +++ b/src/common/log_util.h @@ -0,0 +1,11 @@ +#ifndef CURVEFS_SRC_COMMON_LOG_UTIL_H +#define CURVEFS_SRC_COMMON_LOG_UTIL_H + +namespace curve { +namespace common { + +extern void InitGoogleLogging(const char *argv0); + +}} + +#endif \ No newline at end of file diff --git a/src/mds/main/main.cpp b/src/mds/main/main.cpp index c0824f3bca..3ed8cb4b5b 100644 --- a/src/mds/main/main.cpp +++ b/src/mds/main/main.cpp @@ -107,7 +107,8 @@ int main(int argc, char **argv) { } // initialize logging module - google::InitGoogleLogging(argv[0]); + FLAGS_logtostderr = false; + curve::common::InitGoogleLogging(argv[0]); // reset SIGPIPE handler // etcdclient register SIGPIPE handler in its initialization progress, which diff --git a/src/snapshotcloneserver/main.cpp b/src/snapshotcloneserver/main.cpp index b44468b857..acd61e496f 100644 --- a/src/snapshotcloneserver/main.cpp +++ b/src/snapshotcloneserver/main.cpp @@ -80,7 +80,8 @@ int main(int argc, char **argv) { LoadConfigFromCmdline(conf.get()); conf->PrintConfig(); conf->ExposeMetric("snapshot_clone_server_config"); - google::InitGoogleLogging(argv[0]); + FLAGS_logtostderr = false; + curve::common::InitGoogleLogging(argv[0]); snapshotcloneserver_main(conf); }