C++网狐服务器引入开源日志库spdlog

这篇具有很好参考价值的文章主要介绍了C++网狐服务器引入开源日志库spdlog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       很多人对日志库不以为然,包括网狐这种十几年的公司都不重视,其实日志库记录的东西能在线上出问题时高效解决,特别是别人写的东西,人又走了,出了问题,还可以用日志分析快速解决。要是没有日志记录,出了问题就疑东疑西,看别人代码去解决,那就是你加班的开始。。。

       老版本的网狐框架是没有日志库的,到了后面的旗舰版本才有一个幼儿园版本的日志记录服务器。有也是一个垃圾,一是没写好,二是还经常崩溃,三还丢失日志,四日志服务器CPU经常20%-30%等等。以前还看到他们的代码每个桌子都创建一个文件,游戏里面还一大堆操作文件的代码。。。。。非常难看,还低效。这还能忍得了的!

        为此我找了一个高级的异步开源日志——spdlog,其实开源日志库里面优秀的很多,选择这个是简单易用,可以异步,可以按日志等级打印,支持多线程等等,姿势很多。

且看我如何操刀:

先到GitHub - gabime/spdlog: Fast C++ logging library.开源库上下载下来,编译成lib,然后用类封装起来给各个模块包含使用。如何封装看下面

#ifndef __H_LOGTOOL
#define __H_LOGTOOL
#include <iostream>
#include <spdlog/spdlog.h>
#include <spdlog/cfg/env.h>  // support for loading levels from the environment  variable
#include <spdlog/fmt/ostr.h> // support for user defined types
#include "spdlog/async.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/daily_file_sink.h"

#ifdef _DEBUG
#pragma comment (lib,"./include/lib/spdlogd.lib")
#else
#pragma comment (lib,"./include/lib/spdlog.lib")
#endif
#define LOG_MAX_SIZE 2048
using namespace std;
using namespace spdlog;
class logTool
{
public:
	

	logTool(){
	}

	~logTool(){
		Tool->flush();
		spdlog::drop_all();
		spdlog::shutdown();
	}
	void init(string szServerName)//房间名称
	{
	     //spdlog::init_thread_pool(10000, 2);
			spdlog::cfg::load_env_levels();
		string fileName = "logs/daily" + szServerName + ".log";
		auto daily_logger = spdlog::daily_logger_mt<spdlog::synchronous_factory>("daily_logger", fileName, 0, 0);
		//下面这个支持多线程打印日志
		//auto daily_logger = spdlog::daily_logger_format_mt<spdlog::synchronous_factory>("daily_logger", fileName, 0, 0);
		daily_logger->flush_on(spdlog::level::warn);
		Tool = daily_logger;
	}
	void log(string szLogInfo)
	{
		Tool->info(szLogInfo);
	}
	void logWarn(string szLogInfo)
	{
		Tool->warn(szLogInfo);
	}
	void logError(string szLogInfo)
	{
		Tool->error(szLogInfo);
	}
	void flush()
	{
		Tool->flush();
	}
private:
	shared_ptr<spdlog::logger> Tool;
};

接着下一步是如何引入到服务器里面使用,也简单,几行代码搞定

C++网狐服务器引入开源日志库spdlog,c++,服务器,开源

#include "..\..\全局定义\logTool.h"
logTool logex;
#define log(...) logex.log(__VA_ARGS__)

C++网狐服务器引入开源日志库spdlog,c++,服务器,开源

服务器停止处添加logex.flush();这让防止服务器关闭时没有及时写入文件。

接着看效果

C++网狐服务器引入开源日志库spdlog,c++,服务器,开源

就连打印日志样式也可以设置的,我只用了官方介绍的20%的功能就满足了我的工作需求。

磨刀不误砍柴工,有了日志库,再也不用担心出问题,无处可查,大大降低了加班的次数。文章来源地址https://www.toymoban.com/news/detail-698583.html

到了这里,关于C++网狐服务器引入开源日志库spdlog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 日志服务器的搭建

    日志服务器 在centos7系统中,默认的日志系统是rsyslog,它是一类unix系统上使用的开源工具,用于在ip网络中转发日志信息,rsyslog采用模块化设计,是syslog的替代品。 rsyslog特点 实现了基本的syslog协议 直接兼容syslogd的syslog.conf配置文件 在同一台机器上支持多个rsyslogd进程,支

    2024年02月13日
    浏览(42)
  • 服务器日志存储时间

    按照公司要求,各系统服务器日志留存情况,应满足不少于6个月(服务日志默认是4周)。 一、排查方式: 1.查看/etc/logrotate.conf配置是否正确;   2.查看/var/log日志存储情况(可选); 二、修复方式如下: vi /etc/logrotate.conf # rotate log files weekly weekly 修改为monthly  # keep 4 weeks

    2024年02月14日
    浏览(43)
  • 36、springboot --- 对 tomcat服务器 和 undertow服务器 配置访客日志

    访客日志: Web服务器可以将所有访问用户的记录都以日志的形式记录下来,主要就是记录来自哪个IP的用户、在哪个时间点、访问了哪个资源。 pattern: %t 访问时间 %a 访问用户的ip “%r” 访问的方式和地址 %s 使用的协议 (%D ms) 访问后的响应 代码演示: 这是用 tomcat 来设置 访

    2024年02月10日
    浏览(44)
  • Java 项目 服务器 日志配置

    最近 在搞一个0-1的项目 就想把 服务器日志配置 记录一下 我们使用的是 单体微服务项目 首先你需要一个xml 然后就是 pom文件里面添加上对应的依赖 然后 yml 里面 然后再服务器对应的创建 存储日志的文件 logs  

    2024年02月07日
    浏览(33)
  • linux定时删除服务器日志

    不说废话。直接进入操作流程 linux 定时任务是用的crontab 查看 crontab是否启动 dead 死的 启动crontab 再次查看状态 running  运转的 查看 crontab 查看 crontab任务 编辑 crontab任务 创建了一个任务  0 1 * * *  sh /workspace/java/del_log/dele_log.sh 每天1点自动执行 其中: 第一个号表示时间中的

    2024年02月09日
    浏览(46)
  • 【实用的开源项目】使用服务器部署Navidrome音乐服务器,又一款开源的音乐服务器程序!

    之前小俊给大家介绍过 Koel 音频流服务,就是为了解决大家的这个问题:下载下来的音乐,只能在本机欣赏,难以在多设备共享,如果自己搭建一个音乐服务器,然后再上传自己喜欢的音乐,就太巴适了!小俊最近发现了一个程序—— Navidrome ,小俊这就来推荐给大家啦!还

    2024年04月16日
    浏览(41)
  • logback服务器日志删除原理分析

        查看以下的logback官方文档 Chapter 4: Appenders https://logback.qos.ch/manual/appenders.html     按文档说明,maxHistory是设置保存归档日志的最大数量,该数量的单位受到fileNamePattern里的值%d控制,如果有多个%d,只能有一个主%d,其他的要用aux参数标记为辅助令牌。 /var/log/%d{yyyy/MM, aux}

    2024年02月04日
    浏览(39)
  • Shell 分析服务器日志常用命令

    1、查看有多少个IP访问: 日志文件的第一列是IP地址 2、查看某一个页面被访问的次数: 3、查看每一个IP访问了多少个页面: 4、将每个IP访问的页面数进行从小到大排序: 5、查看某一个IP访问了哪些页面: 6、去掉搜索引擎统计的页面: 7、查看2015年8月16日14时这一个小时内

    2024年02月14日
    浏览(41)
  • journal日志导致服务器磁盘满

    ubuntu 18.04服务器磁盘突然100% 一查/var/log/journal目录占了14G 要清理 journal 日志,可以使用以下步骤: 运行以下命令来查看 journal 日志的使用情况: 这将显示 journal 日志的当前使用情况,包括占用的磁盘空间和日志条目数量。 上述命令将清除 journal 日志中超过 100MB 大小的内容

    2024年02月10日
    浏览(41)
  • 搭建简易syslog日志中转服务器

    在某种场景下,无法接入日志审计设备,本文提供一种方式,可通过搭建简易日志中转服务器,收集到该环境下的日志后,再将其导入日志审计设备中。 rsyslog守护进程来自于当前的linux发布版本的预装模块,但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包