From 7e3ba4ddd230992caaeff66c0f242949cba67d38 Mon Sep 17 00:00:00 2001 From: Wang XiangYu Date: Thu, 7 May 2020 18:04:35 +0800 Subject: [PATCH] Catch exception and print in stderr (#2238) Signed-off-by: wxyu --- CHANGELOG.md | 1 + core/src/utils/LogUtil.cpp | 103 +++++++++++++++++++------------------ 2 files changed, 54 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0df3e9ca..bb4d896f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Please mark all change in change log and use the issue from GitHub ## Improvement - \#221 Refactor LOG macro +- \#833 Catch exception in RolloutHandler and output in stderr - \#1796 Compile Openblas with source code to improve the performance - \#2039 Support Milvus run on SSE CPUs - \#2149 Merge server_cpu_config.template and server_gpu_config.template diff --git a/core/src/utils/LogUtil.cpp b/core/src/utils/LogUtil.cpp index 8e485e49..617e8dbb 100644 --- a/core/src/utils/LogUtil.cpp +++ b/core/src/utils/LogUtil.cpp @@ -56,63 +56,66 @@ RolloutHandler(const char* filename, std::size_t size, el::Level level) { int ret; std::string m(std::string(dir) + "/" + s); s = m; - switch (level) { - case el::Level::Debug: { - s.append("." + std::to_string(++debug_idx)); - ret = rename(m.c_str(), s.c_str()); - // std::cout << "debug_idx:" << debug_idx << ", logs_delete_exceeds:" << logs_delete_exceeds << std::endl; - if (debug_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(debug_idx - logs_delete_exceeds); - // std::cout << "remote " << to_delete << std::endl; - boost::filesystem::remove(to_delete); + try { + switch (level) { + case el::Level::Debug: { + s.append("." + std::to_string(++debug_idx)); + ret = rename(m.c_str(), s.c_str()); + if (debug_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(debug_idx - logs_delete_exceeds); + // std::cout << "remote " << to_delete << std::endl; + boost::filesystem::remove(to_delete); + } + break; } - break; - } - case el::Level::Warning: { - s.append("." + std::to_string(++warning_idx)); - ret = rename(m.c_str(), s.c_str()); - if (warning_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(warning_idx - logs_delete_exceeds); - boost::filesystem::remove(to_delete); + case el::Level::Warning: { + s.append("." + std::to_string(++warning_idx)); + ret = rename(m.c_str(), s.c_str()); + if (warning_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(warning_idx - logs_delete_exceeds); + boost::filesystem::remove(to_delete); + } + break; } - break; - } - case el::Level::Trace: { - s.append("." + std::to_string(++trace_idx)); - ret = rename(m.c_str(), s.c_str()); - if (trace_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(trace_idx - logs_delete_exceeds); - boost::filesystem::remove(to_delete); + case el::Level::Trace: { + s.append("." + std::to_string(++trace_idx)); + ret = rename(m.c_str(), s.c_str()); + if (trace_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(trace_idx - logs_delete_exceeds); + boost::filesystem::remove(to_delete); + } + break; } - break; - } - case el::Level::Error: { - s.append("." + std::to_string(++error_idx)); - ret = rename(m.c_str(), s.c_str()); - if (error_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(error_idx - logs_delete_exceeds); - boost::filesystem::remove(to_delete); + case el::Level::Error: { + s.append("." + std::to_string(++error_idx)); + ret = rename(m.c_str(), s.c_str()); + if (error_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(error_idx - logs_delete_exceeds); + boost::filesystem::remove(to_delete); + } + break; } - break; - } - case el::Level::Fatal: { - s.append("." + std::to_string(++fatal_idx)); - ret = rename(m.c_str(), s.c_str()); - if (fatal_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(fatal_idx - logs_delete_exceeds); - boost::filesystem::remove(to_delete); + case el::Level::Fatal: { + s.append("." + std::to_string(++fatal_idx)); + ret = rename(m.c_str(), s.c_str()); + if (fatal_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(fatal_idx - logs_delete_exceeds); + boost::filesystem::remove(to_delete); + } + break; } - break; - } - default: { - s.append("." + std::to_string(++global_idx)); - ret = rename(m.c_str(), s.c_str()); - if (global_idx - logs_delete_exceeds > 0) { - std::string to_delete = m + "." + std::to_string(global_idx - logs_delete_exceeds); - boost::filesystem::remove(to_delete); + default: { + s.append("." + std::to_string(++global_idx)); + ret = rename(m.c_str(), s.c_str()); + if (global_idx - logs_delete_exceeds > 0) { + std::string to_delete = m + "." + std::to_string(global_idx - logs_delete_exceeds); + boost::filesystem::remove(to_delete); + } + break; } - break; } + } catch (const std::exception& exc) { + std::cerr << exc.what() << ". Exception throws from RolloutHandler." << std::endl; } } -- GitLab