博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己编写的 C++ 轻量级日志类
阅读量:5775 次
发布时间:2019-06-18

本文共 1951 字,大约阅读时间需要 6 分钟。

【自己编写的 C++ 轻量级日志类(兼容linux、vc++6.0、vs2003、vs2010)】

先来看效果:

【测试文件:main.cpp】

1 /* 2 # 本日志类特点 3  4 * 小巧可爱,全程序(YLog.h)仅60多行,使用方便。 5 * 不定义宏,全局变量等,减少污染,低碳环保。 6 * 使用标准库,兼容windows和linux平台。 7 * 多线程安全。(但低本版编译器如 vc++6.0 会使用localtime等线程不安全的函数) 8 * 可输出每条日志信息的日志级别、输出时间、所在程序文件名、所在代码行数、日志信息。 9 10 # 使用介绍11 12 构造函数为 YLog(const int level, const std::string &logfile, const int type = YLog::OVER);13 level:指定日志级别下限,ERROR级别(YLog::ERROR)或INFO级别(YLog::INFO),仅当调用日志输出函数的输出级别达到定义下限级别时才会往日志文件中写日志。(例如,下限定义成YLog::ERROR,那么所有 INFO 级别的信息将不会写入日志文件)14 logfile:指定输出日志文件名。(如果含路径,请保证路径文件夹存在)15 type:指定每一个日志文件的输出方式,每次程序运行追加(YLog::ADD)或覆盖(YLog::OVER)之前的日志文件。16 17 写日志的函数为 template
\18 void w(const std::string &codefile, const int codeline, \19 const int level, const std::string &info, const T &value);20 codefile:固定使用__FILE__宏表示哪个程序文件输出的日志。21 codeline:固定使用__LINE__宏表示文件中哪一行代码输出的日志。22 level:本条信息的级别。(仅当达到下限时才会写入文件)23 info:string类型的任意信息。24 value:想写入日志的任意类型的变量的值。(请确保此类型变量重载了'<<'操作符)25 26 */27 #include
28 #include
29 #include "YLog.h"30 int main(){31 //创建日志对象log1,如果文件存在则追加,日志输出下限级别为INFO级别32 YLog log1(YLog::INFO, "log1.txt", YLog::ADD);33 //创建日志对象log2,如果文件存在则覆盖,日志输出下限级别为ERROR级别34 YLog log2(YLog::ERROR, "log2.txt", YLog::OVER);35 int a = 520;36 double b = 13.14;37 std::string c = "I love U.";38 39 log1.w(__FILE__, __LINE__, YLog::INFO, "watch_a",a);//INFO级别不低于log1的下限INFO级别,正常写入日志文件40 log1.w(__FILE__, __LINE__, YLog::ERROR, "Watch_b",b);//正常写入41 log1.w(__FILE__, __LINE__, YLog::INFO, "watch_c",c);//正常写入42 43 log2.w(__FILE__, __LINE__, YLog::INFO, "watch_a",a);//INFO级别低于log2的下限ERROR级别,不写入日志44 log2.w(__FILE__, __LINE__, YLog::ERROR, "Watch_b",b);//正常写入45 log2.w(__FILE__, __LINE__, YLog::INFO, "watch_c",c);//不写入日志46 return 0;47 }

 

【输出日志1:log1.txt】

 

【输出日志2:log2.txt】

 

 

【附:旧版(仅支持windows,实现了可变参数)下载链接】

【新版本代码链接】

转载于:https://www.cnblogs.com/ywsswy/p/6754973.html

你可能感兴趣的文章
“软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
查看>>
JAVA的优势就是劣势啊!
查看>>
ELK实战之logstash部署及基本语法
查看>>
帧中继环境下ospf的使用(点到点模式)
查看>>
BeanShell变量和方法的作用域
查看>>
LINUX下防恶意扫描软件PortSentry
查看>>
由数据库对sql的执行说JDBC的Statement和PreparedStatement
查看>>
springmvc+swagger2
查看>>
软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
查看>>
cacti集成
查看>>
我的友情链接
查看>>
Java Web Application 自架构 一 注解化配置
查看>>
如何 debug Proxy.pac文件
查看>>
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Kubernetes 1.11 手动安装并启用ipvs
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>
sed 替换基础使用
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
附件3:eclipse memory analyze使用教程
查看>>