C++ MFC日志Log类 棒棒的 控制台或文件或一起输出
设置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类 棒棒的 控制台或文件或一起输出相关推荐
- php log日志管理,PHP日志LOG类定义与用法示例
本文实例讲述了PHP日志LOG类定义与用法.分享给大家供大家参考,具体如下: /** * PHP log 类 */ class Config{ public static function getCo ...
- Qt下一行代码就可以使用的稳定易用的日志log类
Qt下一行代码就可以使用的稳定易用的日志类 此日志类是基于Qt 自带的 扩展的一个易用的日志类, 使用的是Qt自带的日志输出形式, 已长期运行在许多实际项目中,稳定可靠,而且跨平台, 在windows ...
- 日志工具类——Log
Log的使用 Log是Android(android.util.Log)中的日志工具类,用于获取程序从启动到关闭的日志信息. Log类所输出的日志内容分为六个级别:Verbose ,Debug ,In ...
- Logger-功能强大使用方便的Log日志打印工具类
介绍 Android开发中Log日志打印对开发者来说是非常重要的功能.但是感觉Log写多了也是烦,每次都需要设置一个TAG过滤值和具体的打印信息,而且打印的信息也不够丰富. 这里我推荐一个功能强大的L ...
- Android -- Log日志调试(android.utl.log类)
Android调试要通过模拟器运行,或者直接USB远程连接到一部手机调试.即使在不关闭模拟进行调试时候,也要经过编译.apk打包.上传apk.运行apk的过程,时间也不短,所以应该在程序固定一次运行中 ...
- 鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题
鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题 文章目录 鸿蒙harmonyOS打印Log日志工具类+看不到Log日志的问题 前言 一.使用工具类 二.封装步骤 1.鸿蒙harmo ...
- 这份日志格式规范超棒的,拿走不谢(Java版)
1 简介 在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力.在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往 ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件...
关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089 在开发中,我们常常用打印log的方 ...
- Android开发之非常好用的日志工具类(公司项目挖出来的)
/*** 日志相关类:默认是测试环境<br>* <b>支持:存储Log日志文件到本地.发送Log日志信息到服务器</b>** @since 2016-5-13 14 ...
最新文章
- BASH 进阶 文件描述符号的使用
- 剑指offer-旋转数组的最小数字
- 转:openTSDB 2.0 安装
- 如何用Java代码解析json
- 如何从OnDocumentComplete事件中获得当前frame的html代码
- JavaScript之实例练习(正反选、二级联动)
- 【题解】SCOI2009围豆豆
- 移动端vue实现部门结构功能_基于Vue的组织架构树组件
- 计算机编程 设计入门,计算机编程入门图文教程_计算机程序设计教程,计算机编程入门教程-其它文档类资源...
- 戴尔笔记本安装win10系统步骤
- Java服务端支付功能模块--(一)支付宝支付
- wxs 实现小程序拖拽功能
- android红外线开发实例,Android实例-红外线操作(XE10.2+小米5)
- 现代软件工程 教课心得
- 论文封面摘要正文页码不同 WORD中怎么编辑页码不连续 设置目录和正文页码不同
- excel文档损坏打不开的原因是什么?
- 四川铺管家教育:拼多多0.99有什么注意的
- JavaCV音视频开发宝典:JavaCV使用gdigrab方式实现windows录屏(windows屏幕画面抓取/采集,可实现高帧率屏幕截屏、录屏功能)
- P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
- 10.2国庆作业(PWM实验)
热门文章
- wifi的 2.4G 和5G
- 知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”
- 人对光波的三种特性_光的特点是什么?
- 轻松制作美容美发线下门店电子优惠券的实用方法分享
- 微信小程序——案例:京东首页
- Excel打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。”最快的解决办法
- 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
- STM32 WinUSB(WCID)免驱高速通信 20M/s(附详细测试)
- iPhone14也将支持拍月亮了,然而这可能是技术工程师的功劳
- yaourt -S mysql_Yaourt 已死!在 Arch 上使用这些替代品