注意:最新版本在https://github.com/ywsswy/ylog

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

先来看效果:

【测试文件:main.cpp】

 /*
# 本日志类特点 * 小巧可爱,全程序(YLog.h)仅60多行,使用方便。
* 不定义宏,全局变量等,减少污染,低碳环保。
* 使用标准库,兼容windows和linux平台。
* 多线程安全。(但低本版编译器如 vc++6.0 会使用localtime等线程不安全的函数)
* 可输出每条日志信息的日志级别、输出时间、所在程序文件名、所在代码行数、日志信息。 # 使用介绍 构造函数为 YLog(const int level, const std::string &logfile, const int type = YLog::OVER);
level:指定日志级别下限,ERROR级别(YLog::ERROR)或INFO级别(YLog::INFO),仅当调用日志输出函数的输出级别达到定义下限级别时才会往日志文件中写日志。(例如,下限定义成YLog::ERROR,那么所有 INFO 级别的信息将不会写入日志文件)
logfile:指定输出日志文件名。(如果含路径,请保证路径文件夹存在)
type:指定每一个日志文件的输出方式,每次程序运行追加(YLog::ADD)或覆盖(YLog::OVER)之前的日志文件。 写日志的函数为 template<typename T> \
void w(const std::string &codefile, const int codeline, \
const int level, const std::string &info, const T &value);
codefile:固定使用__FILE__宏表示哪个程序文件输出的日志。
codeline:固定使用__LINE__宏表示文件中哪一行代码输出的日志。
level:本条信息的级别。(仅当达到下限时才会写入文件)
info:string类型的任意信息。
value:想写入日志的任意类型的变量的值。(请确保此类型变量重载了'<<'操作符) */
#include <iostream>
#include <string>
#include "YLog.h"
int main(){
//创建日志对象log1,如果文件存在则追加,日志输出下限级别为INFO级别
YLog log1(YLog::INFO, "log1.txt", YLog::ADD);
//创建日志对象log2,如果文件存在则覆盖,日志输出下限级别为ERROR级别
YLog log2(YLog::ERROR, "log2.txt", YLog::OVER);
int a = ;
double b = 13.14;
std::string c = "I love U."; log1.w(__FILE__, __LINE__, YLog::INFO, "watch_a",a);//INFO级别不低于log1的下限INFO级别,正常写入日志文件
log1.w(__FILE__, __LINE__, YLog::ERROR, "Watch_b",b);//正常写入
log1.w(__FILE__, __LINE__, YLog::INFO, "watch_c",c);//正常写入 log2.w(__FILE__, __LINE__, YLog::INFO, "watch_a",a);//INFO级别低于log2的下限ERROR级别,不写入日志
log2.w(__FILE__, __LINE__, YLog::ERROR, "Watch_b",b);//正常写入
log2.w(__FILE__, __LINE__, YLog::INFO, "watch_c",c);//不写入日志
return ;
}

【输出日志1:log1.txt】

【输出日志2:log2.txt】

【附:旧版(仅支持windows,实现了可变参数)下载链接http://download.csdn.net/detail/yws_swy/9886382

【新版本代码链接https://github.com/ywsswy/YLog

自己编写的 C++ 超轻量级日志类的更多相关文章

  1. 分享自己的超轻量级高性能ORM数据访问框架Deft

    Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手. Deft包含如下但不限于此的特点: 1.按照Transact-SQL的语法语义风格来设计,只 ...

  2. 超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上

    超轻量级高性能ORM数据访问组件Deft,比dapper快20%以上 阅读目录 Deft简介 Deft 核心类介绍 Deft 3分钟即可上手使用 其他可选的配置参数 性能测试 Demo代码下载 回到顶 ...

  3. 基于Groovy+HttpRestful的超轻量级的接口测试用例配置的设计方案及DEMO实现

    目标 设计一个轻量级测试用例框架,接口测试编写者只需要编写测试用例相关的内容(入参及结果校验),不需要理会系统的实现,不需要写跟测试校验无关的内容. 思路 测试用例分析 一个用例由以下部分组成: (1 ...

  4. 基于领域驱动设计(DDD)超轻量级快速开发架构

    smartadmin.core.urf 这个项目是基于asp.net core 3.1(最新)基础上参照领域驱动设计(DDD)的理念,并参考目前最为了流行的abp架构开发的一套轻量级的快速开发web ...

  5. 支持异步写入的日志类,支持Framework2.0

    因为工作需要需要在XP上运行一个C#编写的Winform插件,我就用Framework2.0,因为存在接口交互所以想保留交易过程的入参出参. 考虑到插件本身实施的因素,就没有使用Log4.NLog等成 ...

  6. 【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待

     [等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可 ...

  7. 超轻量级网络SqueezeNet网络解读

    SqueezeNet网络模型非常小,但分类精度接近AlexNet. 这里复习一下卷积层参数的计算 输入通道ci,核尺寸k,输出通道co,参数个数为: 以AlexNet第一个卷积为例,参数量达到:3*1 ...

  8. muduo网络库源码学习————日志类封装

    muduo库里面的日志使方法如下 这里定义了一个宏 #define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) ...

  9. [C#] 日志类

    在程序发布到服务器上的时候,不能在像本地执行一样可以调试,在发生错误时候,往往不能很方便的查找错误.将错误信息写入文件是一种比较常用的处理方法.以下是一个日志类,实现以下功能: 1)按日期每天生产不同 ...

随机推荐

  1. 转:Java中的Clone()方法详解

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  2. 调停者(Mediator)模式

    调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们可以较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些 ...

  3. 通过rpm 安装MYSQL

    1.MYSQL Server端安装: 2.MYSQL client 安装 3.设置MYSQL密码(安装了MySql客户端才可以执行) ' 4.登录MYSQL mysql 的最简单的安装方法啦

  4. 【JAVAWEB学习笔记】02_HTML&CSS

    //--------------纯文本版------------------------------------------------- 今日新增单词(更多属性查看手册) form:表单 (要提交的 ...

  5. chrome主页被篡改 成hao123

    应该是开了个从流氓网站下的蓝灯,然后发现主页被篡改 尝试chrome设置修改无效,应该是快捷方式被改了 系统 win10 1.打开对应的下面两个地址,找到chrome的快捷方式,右键属性 C:\Use ...

  6. [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成Html代码

    在web开发中经常会遇到在内部代码中获取Html,这些Html是需要和数据进行一起渲染.并不是直接把Html代码返回给客户端.这样的做法有很多应用场景,例如分页.Ajax一次性获取几段Html片段.生 ...

  7. Mysql数据库二进制安装

    MySQL数据库有四种安装方法: 源码包编译安装 RPM包安装 二进制文件安装 官方yum源安装 这里我们主要介绍二进制包的安装方法 在MySQL官网下载二进制包并且上传到服务器上 解压二进制包 [r ...

  8. 一天搞定HTML----列表标签03

    1.细说列表标签 2.代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  9. 《物联网框架ServerSuperIO教程》-20.网络通讯控制器分组,提高交互的负载平衡能力。v3.6.6 版本发布

    20.1     概述 ServerSuperIO原来在网络通讯模式下,只有一个网络控制器,在自控模式.并发模式和单例模式下时都是异步处理返回的数据,并不会出现性能问题.但是在轮询模式下,一个网络控制 ...

  10. list与Set、Map区别

    1.List,Set都是继承自Collection接口,Map则不是 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入 ...