easylogging++的那些事(四)源码分析(十)扩展日志回滚

您所在的位置:网站首页 gin源码分析 easylogging++的那些事(四)源码分析(十)扩展日志回滚

easylogging++的那些事(四)源码分析(十)扩展日志回滚

2023-11-19 22:00| 来源: 网络整理| 查看: 265

扩展日志回滚 日志回滚接口扩展后的日志回滚接口增加创建新文件的 LoggingFlag(CreateNewLogFile)改动后的实现

在上一篇我们介绍了 easylogging++的 异步日志 的实现。在结尾的时候,我们提到 easylogging++的默认实现不符合真实项目的需求,因此日志回滚的功能我们就需要根据实际的项目需求定制一下。今天我们就来看看如何定制日志回滚以满足真实项目的需求。

日志回滚接口

    在 日志格式配置管理类 中我们介绍 TypedConfigurations 类的时候我们详细分析了 easylogging++提供的实现日志回滚的接口:

bool TypedConfigurations::unsafeValidateFileRolling(Level level, const PreRollOutCallback &preRollOutCallback) { base::type::fstream_t *fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); if (fs == nullptr) { return true; } std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); // 判断当前日志文件大小是否达到设定的阈值 if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); ELPP_INTERNAL_INFO(1, "Truncating log file [" base::type::fstream_t *fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); if (fs == nullptr) { return true; } std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); ELPP_INTERNAL_INFO(1, "Truncating log file [" ELPP_INTERNAL_ERROR("Configurations is NULL, please re-check your configurations for level[" value(); std::string resolvedFilename; do { // 调整文件名配置项值中的日期格式部分为实际当前时间,其中的"/"替换为"-" resolvedFilename = resolveFilename(FilenameConfValue); if (resolvedFilename.empty()) { std::cerr ELPP_INTERNAL_ERROR("Bad file [" el::Loggers::addFlag(el::LoggingFlag::StrictLogFileSizeCheck); el::Loggers::addFlag(el::LoggingFlag::CreateNewLogFile); return 0; }

至此,日志滚动的修改就完成了。 到目前为止,我们已经将 easylogging++的主要功能的实现基本都分析完了。从下一篇开始,我们将前面未分析过的类或者接口一一介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3