#include "stdafx.h" #include "Logger.h" Logger::Logger() { // 默认构造函数 this->target = terminal; this->level = debug; cout << "[WELCOME] " << __FILE__ << " " << currTime() << " : " << "=== Start logging ===" << endl; } Logger::Logger(log_target target, log_level level, string path) { this->target = target; this->path = path; this->level = level; string tmp = ""; // 双引号下的常量不能直接相加,所以用一个string类型做转换 string welcome_dialog = tmp + "[Welcome] " + __FILE__ + " " + currTime() + " : " + "=== Start logging ===\n"; if (target != terminal) { this->outfile.open(path, ios::out | ios::app); // 打开输出文件 this->outfile << welcome_dialog; } if (target != file) { // 如果日志对象不是仅文件 cout << welcome_dialog; } } 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 = ""; prefix += __FILE__; prefix += " "; string output_content = prefix + currTime() + " : " + text + "\n"; if (this->level <= act_level && this->target != file) { // 当前等级设定的等级才会显示在终端,且不能是只文件模式 cout << output_content; } if (this->target != terminal) outfile << output_content; } void Logger::DEBUG(string text) { this->output(text, debug); } void Logger::INFO(string text) { this->output(text, info); } void Logger::WARNING(string text) { this->output(text, warning); } void Logger::LERROR(string text) { this->output(text, error); }