linux glog编译及对部分功能修改

【前言】

glog是google的日志库,原生的glog库在细节上无法满足我们的需求,需要进行一些修改。本文是根据网上的一些资料,经过尝试(主要是网上资料不详细,坑比较多)后,详细介绍一些简单的格式、功能修改过程。

1、glog编译

1、下载
https://github.com/google/glog
2、解压
tar -zxvf glog-master.zip
3、编译
cd glog-master
./autogen.sh
./configure
make
make install

若编译失败,可能缺少依赖:autoconf automake libtool

2、功能修改

1)增加日志按天输出

PidHasChanged() 定义于 utilities.cc 文件中,可以加一个类似的 DayHasChanged() 函数(注意 utilities.h 文件中加上函数声明,且要与与PidHasChanged()在同一命名空间下):

static int32 g_main_day = 0;
bool DayHasChanged()
{
    time_t raw_time;
    struct tm tm_info;

    time(&raw_time);
    localtime_r(&raw_time,&tm_info);

    if (tm_info.tm_mday != g_main_day)
    {
        g_main_day = tm_info.tm_mday;
        return true;
    }

    return false;
}

同时,再logging.cc的LogFileObject::Write()函数中改为

if (static_cast<int>(file_length_ >> 20) >= MaxLogSize() ||
 PidHasChanged() || DayHasChanged()) {

2)高级log不往低级log写

glog默认有四种log级别,高级别的log中会包含低级别的log,这个我们也是不需要的,我希望每一个分级一个文件。我增加了一个宏来控制这个开关,以免影响到原来的功能。
1、在logging.h中增加

DECLARE_bool(servitysinglelog);

该修改不会再/usr/loocal/include(安装路径)中,若头文件重这里导出则需手动添加
2、在logging.cc文件中增加

GLOG_DEFINE_bool(servitysinglelog, false,  "Prevents high-level logs from writing to low-level logs");

并将 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 {
      if(FLAGS_servitysinglelog)
      {
          LogDestination::MaybeLogToLogfile(severity, timestamp, message, len);
      }
      else
      {
          for (int i = severity; i >= 0; --i)
            LogDestination::MaybeLogToLogfile(i, timestamp, message, len);
      }
  }
}

3)修改log输出格式(日志头)

在logging.cc文件中LogMessage::Init()函数中日志头格式

if (FLAGS_log_prefix && (line != kNoLogPrefix)) {
    stream() << LogSeverityNames[severity][0] //日志等级第一个字母
             << setw(2) << 1+data_->tm_time_.tm_mon 
             << setw(2) << data_->tm_time_.tm_md
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值