修改glog源码解决不同级别日志混合输出的问题

本文针对glog中ERROR日志被重复记录的问题,通过修改源代码中的LogToAllLogfiles函数来解决ERROR日志多次输出的情况,确保正式环境中ERROR日志的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ERROR的日志会被同时输出到INFO中,这在正式上线的应用中,会导致ERROR日志多次输出,感觉不爽,故对glog中src下logging.cc中inline void LogDestination::LogToAllLogfiles函数做如下修改:

inline void LogDestination::LogToAllLogfiles(LogSeverity severity,
                                             time_t timestamp,
                                             const char* message,
                                             size_t len) {

  if ( FLAGS_logtostderr ) {           // global flag: never log to file
    ColoredWriteToStderr(severity, message, len);
  } else {
    //for (int i = severity; i >= 0; --i) //注释掉此行
      LogDestination::MaybeLogToLogfile(/*i*/severity, timestamp, message, len);
  }
}


/usr/bin/ld: ../lib/libceres.a(solver.cc.o): in function `ceres::(anonymous namespace)::LineSearchOptionsAreValid(ceres::Solver::Options const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .cold]': solver.cc:(.text.unlikely+0xe26): undefined reference to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' /usr/bin/ld: solver.cc:(.text.unlikely+0xe3a): undefined reference to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' /usr/bin/ld: solver.cc:(.text.unlikely+0xe6f): undefined reference to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' /usr/bin/ld: solver.cc:(.text.unlikely+0xe83): undefined reference to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' /usr/bin/ld: solver.cc:(.text.unlikely+0xeb8): undefined reference to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' /usr/bin/ld: ../lib/libceres.a(solver.cc.o):solver.cc:(.text.unlikely+0x1210): more undefined references to `void absl::log_internal::LogMessage::CopyToEncodedBuffer<(absl::log_internal::LogMessage::StringType)0>(absl::string_view)' follow /usr/bin/ld: ../lib/libceres.a(event_logger.cc.o): in function `bool absl::str_format_internal::FormatArgImpl::Dispatch<std::basic_string_view<char, std::char_traits<char> > >(absl::str_format_internal::FormatArgImpl::Data, absl::str_format_internal::FormatConversionSpecImpl, void*)': event_logger.cc:(.text._ZN4absl19str_format_internal13FormatArgImpl8DispatchISt17basic_string_viewIcSt11char_traitsIcEEEEbNS1_4DataENS0_24FormatConversionSpecImplEPv[_ZN4absl19str_format_internal13FormatArgImpl8DispatchISt17basic_string_viewIcSt11char_traitsIcEEEEbNS1_
03-12
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值