| 86 | ////////////////////////////////////////////////////////////////////////// |
| 87 | |
| 88 | AFCLogModule::spdlogger AFCLogModule::CreateOssLogger(const std::string& name) |
| 89 | { |
| 90 | if (name.empty()) |
| 91 | { |
| 92 | return nullptr; |
| 93 | } |
| 94 | |
| 95 | try |
| 96 | { |
| 97 | // log/oss/login.log |
| 98 | std::vector<spdlog::sink_ptr> sinks_vec; |
| 99 | std::string log_name = ARK_FORMAT("{}{}oss{}{}.log", GetPluginManager()->GetLogPath(), |
| 100 | spdlog::details::os::folder_sep, spdlog::details::os::folder_sep, name); |
| 101 | auto rorate_file_sink = |
| 102 | std::make_shared<spdlog::sinks::rotating_file_with_date_sink_mt>(log_name, 20 * 1024 * 1024, 100000); |
| 103 | sinks_vec.push_back(rorate_file_sink); |
| 104 | |
| 105 | if (oss_tp_ == nullptr) |
| 106 | { |
| 107 | oss_tp_ = std::make_shared<spdlog::details::thread_pool>(spdlog::details::default_async_q_size, 1); |
| 108 | } |
| 109 | |
| 110 | auto logger = std::make_shared<spdlog::async_logger>(name, std::begin(sinks_vec), std::end(sinks_vec), oss_tp_); |
| 111 | logger->set_pattern("%v"); |
| 112 | // flush when level >= info |
| 113 | logger->flush_on(spdlog::level::info); |
| 114 | |
| 115 | spdlog::register_logger(logger); |
| 116 | oss_loggers_.insert(std::make_pair(name, logger)); |
| 117 | return logger; |
| 118 | } |
| 119 | catch (std::system_error& error) |
| 120 | { |
| 121 | CONSOLE_INFO_LOG << "Create OSS logger failed, error = " << error.what() << std::endl; |
| 122 | } |
| 123 | |
| 124 | ARK_ASSERT_RET_VAL(0, nullptr); |
| 125 | } |
| 126 | |
| 127 | void AFCLogModule::OssLog(const google::protobuf::Message& msg) |
| 128 | { |