首页 / 日志 / c++之一个方便的日志库
c++之一个方便的日志库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++之一个方便的日志库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4387字,纯文字阅读大概需要7分钟。
内容图文
概述
- 本文演示环境: win10 + vs2017
- 日志,我用的很少,通常是用作动态库调试使用。
- 日志记录下来,基本就没看过,除非模块出现了问题。
- 使用cmake管理的项目
- 使用C++封装了C语言读写文件实现了的记录日志,
- 避免使用c++流,因为效率低。
- 默认是写文本文件,其他格式? 以后再开放接口吧
- 因为是纯C++ 配合C语言,可以通过绝大部分编译器编译。已经通过 clang++ + msvc 编译。
项目下载
可以再 gitee 下载
日志文件接口
使用很简单:1 初始化,2,写日志,3.释放。
/// ----------------------------------------------------------------------------------------
/// 日志文件接口类
/// ----------------------------------------------------------------------------------------
class ilog
{
public:
/// --------------------------------------------------------------------------------
/// 初始化,
/// @info - 日志信息
/// @return - int
/// 0 - 成功
/// --------------------------------------------------------------------------------
virtual int init_(const oct_toolkits::st_log_info& info) = 0;
/// --------------------------------------------------------------------------------
/// 写日志,日志内容为文本,且每一行前面都带有时间; 例如: [2021-03-28 15:00:00:001] 日志文件内容
/// @str_log - 待写入日志文件内容
/// @return - int
/// 0 - 成功
/// 1 - 无法写入日志,可能是日志文件创建失败,或者磁盘剩余空间不足5G
/// 2 - 失败,无法创建写日志文件对象,请先初始化
/// --------------------------------------------------------------------------------
virtual int log_text_(const std::string& str_log) = 0;
/// --------------------------------------------------------------------------------
/// 写日志
/// @pdata - 待写入内容
/// @pdata_len - 待写入长度
/// @return - int
/// 0 - 成功、
/// 1 - 失败,参数【pdata】为空或者参数【pdata_len】为0
/// 2 - 失败,无法写入日志,可能是日志文件创建失败,或者磁盘剩余空间不足5G
/// 3 - 失败,无法写入,日志文件读写对象创建失败,请先初始化
/// --------------------------------------------------------------------------------
virtual int log_text_(const char* pdata, unsigned int pdata_len) = 0;
/// --------------------------------------------------------------------------------
/// 将参数【str_log】每个字节的16进制写入文件,全部大写
/// @str_log - 待写入内容
/// @return - int
/// 0 - 成功
/// 1 - 无法写入日志,可能是日志文件创建失败,或者磁盘剩余空间不足5G
/// 2 - 失败,无法写入,日志文件读写对象创建失败,请先初始化
/// --------------------------------------------------------------------------------
virtual int log_hex_(const std::string& str_log) = 0;
/// --------------------------------------------------------------------------------
/// 将参数【pdata】每个字节的16进制写入文件,全部大写
/// @pdata - 待写入内容
/// @pdata_len - 写入内容长度
/// @return - int
/// 0 - 成功
/// 1 - 失败,参数【pdata】为空或者参数【pdata_len】为0
/// 2 - 失败,无法写入日志,可能是日志文件创建失败,或者磁盘剩余空间不足5G
/// 3 - 失败,无法写入,日志文件读写对象创建失败,请先初始化
/// --------------------------------------------------------------------------------
virtual int log_hex_(const char* pdata, unsigned int pdata_len) = 0;
/// --------------------------------------------------------------------------------
/// 释放内部资源
/// @return - void
///
/// --------------------------------------------------------------------------------
virtual void uninit_() = 0;
};
因为项目需要,需要将数据写文本文件,且将数据写16进制,比如,字符串 "1234567890", 将每个字符的ASCII的十六进制写文件。
完整使用范例
#include <iostream>
#include <oct_toolkits.h>
void call_log_()
{
using namespace oct_toolkits;
using namespace std;
/// 创建文件对象
ilog* plog = create_ilog_();
if (NULL == plog)
{
cout << "call_log, plog = null";
return;
}
st_log_info info;
info.path_ = std::string("C:\\game\\file_demo\\log\\send");
info.prefix_ = std::string("C");
info.postfix_ = std::string("fc");
info.type_ = std::string(".log");
int ret = plog->init_(info);
if (0 != ret)
{
cout << "call log, init, ret =" << ret;
}
else
{
cout << "call log, init success";
}
/// ----------------------------------------------------------------------------------------
/// 写文本
std::string str_text("1234567890");
plog->log_text_(str_text);
char arr2[] = {"9876543210"};
plog->log_text_(arr2, 10);
/// 写十六进制
plog->log_hex_(str_text);
plog->log_hex_(arr2, 10);
plog = release_ilog_(plog);
}
int main(int argc, char* argv[], char* env[])
{
//call_file();
call_log_();
//system("pause");
return 0;
}
日志文件内容
内容总结
以上是互联网集市为您收集整理的c++之一个方便的日志库全部内容,希望文章能够帮你解决c++之一个方便的日志库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。