注意:最新版本在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. MyBatis源码解读(3)——MapperMethod

    在前面两篇的MyBatis源码解读中,我们一路跟踪到了MapperProxy,知道了尽管是使用了动态代理技术使得我们能直接使用接口方法.为巩固加深动态代理,我们不妨再来回忆一遍何为动态代理. 我相信在 ...

  2. Java并发编程:Callable、Future和FutureTask的实现

    启动线程执行任务,如果需要在任务执行完毕之后得到任务执行结果,可以使用从Java 1.5开始提供的Callable和Future 下面就分析一下Callable.Future以及FutureTask的 ...

  3. Appium 1.6.4 环境搭建流程(Java, Android+IOS, Windows+Mac)

    Appium1.6.4已经出来一段时间了,快速给大家串一下怎么搭建,贴了下载链接 1 基础环境: Windows + Mac: Java JDK 1.8+ (需配置环境变量),Appium1.6.4的 ...

  4. PHP中array_merge函数与array+array的区别

    在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别. 区别如下: 当下标为数值时,array_me ...

  5. One day one cf,Keep Wa away from me.

    Codeforces Round #379 (Div. 2) A水,算字符个数 B水,贪心优先组成后者 C贪心尺取,以消耗排序change那个,然后贪心另一个 D对角线就是x0+y0 == x1+y1 ...

  6. Git简略教程

    Git使用教程 厂里大部分后端应用的版本控制工具为SVN,前端代码则更习惯于Git,好久不用Git有些生疏,复习一下,效率就是生命. 1.拉取远程分支到本地 git clone + 代码地址 + 分支 ...

  7. ES学习笔记

    ES学习 1. 安装 1.1 ES 安装配置 curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5. ...

  8. SpringMVC实现账号只能在一处登陆

    一.问题引导 在Web开发中,实现一个账号只能在一处登陆有两种形式:1.当某个账号在某处登陆后,如果再在其他处登陆,将前一个账号挤掉:2.当某个账号登陆后,此账号在其他设备登陆提示已经登陆,无法登陆. ...

  9. With our powers combined! xgboost and pipelearner

    @drsimonj here to show you how to use xgboost (extreme gradient boosting) models in pipelearner. Why ...

  10. Asynchronous and Distributed Programming in R with the Future Package

    Every now and again someone comes along and writes an R package that I consider to be a 'game change ...