]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimosn/osd: logger into log_file 46296/head
authorNitzanMordhai <nmordech@redhat.com>
Sun, 15 May 2022 04:49:36 +0000 (04:49 +0000)
committerNitzanMordhai <nmordech@redhat.com>
Wed, 25 May 2022 08:39:05 +0000 (08:39 +0000)
set seastar ostream to log_file
Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
src/crimson/osd/main.cc

index 9076a58f3097af2a48264d80af9fa0c8fe8702ec..e81bff4ea1f7b2ee80817995ae867f77e2534935 100644 (file)
@@ -5,6 +5,7 @@
 #include <unistd.h>
 
 #include <iostream>
+#include <fstream>
 #include <random>
 
 #include <seastar/apps/lib/stop_signal.hh>
@@ -238,6 +239,19 @@ int main(int argc, const char* argv[])
           local_conf().parse_config_files(conf_file_list).get();
           local_conf().parse_env().get();
           local_conf().parse_argv(config_proxy_args).get();
+          std::ofstream log_file_stream;
+          if (auto log_file = local_conf()->log_file; !log_file.empty()) {
+            log_file_stream.open(log_file, std::ios::app | std::ios::out);
+            try {
+              seastar::throw_system_error_on(log_file_stream.fail());
+            } catch (const std::system_error& e) {
+              ceph_abort_msg(fmt::format("unable to open log file: {}", e.what()));
+            }
+            auto reset_logger = seastar::defer([] {
+              logger().set_ostream(std::cerr);
+            });
+            logger().set_ostream(log_file_stream);
+          }
           if (const auto ret = pidfile_write(local_conf()->pid_file);
               ret == -EACCES || ret == -EAGAIN) {
             ceph_abort_msg(