设置MFC边操作边通过控制台实时看printf日志

#include "pch.h"
#include "log_sys.h"// 默认构造函数
Logger::Logger() {  Logger(terminal,debug,"log.txt");
}//构造函数
Logger::Logger(log_target target, log_level level, string path) {this->target = target;this->path = path;this->level = level;string output_content =  "[Welcome] " + currTime() + " : === Start logging ===path:"+ path  +"\n";if (target != terminal) {   // 不是终端    outfile.open(path, ios::out | ios::app);   //打开输出文件outfile << output_content;}if (target != file) {// 不是文件cout << output_content;}
}
//核心输出
void Logger::output(string text, log_level act_level) {string prefix;if (act_level == debug)          prefix = "[DEBUG]  ";else if (act_level == info)       prefix = "[INFO]   ";else if (act_level == warning)    prefix = "[WARNING]";else if (act_level == error)  prefix = "[ERROR]  ";else                            prefix = "";string output_content = prefix + currTime() + ":" + text + "\n";if (this->target != file)       {      cout << output_content;    } // 不是文件if (this->target != terminal)  {   outfile << output_content;    } // 不是终端
}void Logger::DEBUG_F(string text)  {   this->output(text, debug);   }
void Logger::INFO_F(string text)    {   this->output(text, info);    }
void Logger::WARNING_F(string text) {   this->output(text, warning);}
void Logger::ERROR_F(string text)   {   this->output(text, error);   }
#pragma once# ifndef LOG_SYS_H
# define LOG_SYS_H# include <iostream>
# include <fstream>
# include <string>
# include <time.h>
# include <stdio.h>
# include <stdlib.h>using std::cout;
using std::string;
using std::endl;
using std::to_string;
using std::ios;
// 获取当前时间,并规范表示
static string currTime() {char tmp[64] = {0};struct tm t;   //tm结构指针time_t now;  //声明time_t类型变量time(&now);                 //获取系统日期和时间localtime_s(&t, &now);       //获取当地日期和时间strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S", &t);return tmp;
}class Logger {
public:enum log_level { debug=0, info, warning, error };// 日志等级enum log_target { file=0, terminal, file_and_terminal };// 日志输出目标
private:std::ofstream outfile;    // 将日志输出到文件的流对象log_target target;        // 日志输出目标string path;              // 日志文件路径log_level level;          // 日志等级void output(string text, log_level act_level);            // 输出行为public:Logger();  // 默认构造函数Logger(log_target target, log_level level, string path);void DEBUG_F(string text);void INFO_F(string text);void WARNING_F(string text);void ERROR_F(string text);
};
# endif

关于pch.h

一些通用的宏可以放这里。

C++ MFC日志Log类 棒棒的 控制台或文件或一起输出相关推荐

  1. php log日志管理,PHP日志LOG类定义与用法示例

    本文实例讲述了PHP日志LOG类定义与用法.分享给大家供大家参考,具体如下: /** * PHP log 类 */ class Config{ public static function getCo ...

  2. Qt下一行代码就可以使用的稳定易用的日志log类

    Qt下一行代码就可以使用的稳定易用的日志类 此日志类是基于Qt 自带的 扩展的一个易用的日志类, 使用的是Qt自带的日志输出形式, 已长期运行在许多实际项目中,稳定可靠,而且跨平台, 在windows ...

  3. 日志工具类——Log

    Log的使用 Log是Android(android.util.Log)中的日志工具类,用于获取程序从启动到关闭的日志信息. Log类所输出的日志内容分为六个级别:Verbose ,Debug ,In ...

  4. Logger-功能强大使用方便的Log日志打印工具类

    介绍 Android开发中Log日志打印对开发者来说是非常重要的功能.但是感觉Log写多了也是烦,每次都需要设置一个TAG过滤值和具体的打印信息,而且打印的信息也不够丰富. 这里我推荐一个功能强大的L ...

  5. Android -- Log日志调试(android.utl.log类)

    Android调试要通过模拟器运行,或者直接USB远程连接到一部手机调试.即使在不关闭模拟进行调试时候,也要经过编译.apk打包.上传apk.运行apk的过程,时间也不短,所以应该在程序固定一次运行中 ...

  6. 鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题

    鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题 文章目录 鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题 前言 一.使用工具类 二.封装步骤 1.鸿蒙harmo ...

  7. 这份日志格式规范超棒的,拿走不谢(Java版)

    1 简介 在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力.在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往 ...

  8. Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件...

    关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089    在开发中,我们常常用打印log的方 ...

  9. Android开发之非常好用的日志工具类(公司项目挖出来的)

    /*** 日志相关类:默认是测试环境<br>* <b>支持:存储Log日志文件到本地.发送Log日志信息到服务器</b>** @since 2016-5-13 14 ...

最新文章

  1. BASH 进阶 文件描述符号的使用
  2. 剑指offer-旋转数组的最小数字
  3. 转:openTSDB 2.0 安装
  4. 如何用Java代码解析json
  5. 如何从OnDocumentComplete事件中获得当前frame的html代码
  6. JavaScript之实例练习(正反选、二级联动)
  7. 【题解】SCOI2009围豆豆
  8. 移动端vue实现部门结构功能_基于Vue的组织架构树组件
  9. 计算机编程 设计入门,计算机编程入门图文教程_计算机程序设计教程,计算机编程入门教程-其它文档类资源...
  10. 戴尔笔记本安装win10系统步骤
  11. Java服务端支付功能模块--(一)支付宝支付
  12. wxs 实现小程序拖拽功能
  13. android红外线开发实例,Android实例-红外线操作(XE10.2+小米5)
  14. 现代软件工程 教课心得
  15. 论文封面摘要正文页码不同 WORD中怎么编辑页码不连续 设置目录和正文页码不同
  16. excel文档损坏打不开的原因是什么?
  17. 四川铺管家教育:拼多多0.99有什么注意的
  18. JavaCV音视频开发宝典:JavaCV使用gdigrab方式实现windows录屏(windows屏幕画面抓取/采集,可实现高帧率屏幕截屏、录屏功能)
  19. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
  20. 10.2国庆作业(PWM实验)

热门文章

  1. wifi的 2.4G 和5G
  2. 知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”
  3. 人对光波的三种特性_光的特点是什么?
  4. 轻松制作美容美发线下门店电子优惠券的实用方法分享
  5. 微信小程序——案例:京东首页
  6. Excel打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。”最快的解决办法
  7. 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
  8. STM32 WinUSB(WCID)免驱高速通信 20M/s(附详细测试)
  9. iPhone14也将支持拍月亮了,然而这可能是技术工程师的功劳
  10. yaourt -S mysql_Yaourt 已死!在 Arch 上使用这些替代品