simple cpp file logger

this is a simple cpp file logger implementation, which is copied from making log file - C++ Forum
https://cplusplus.com/forum/beginner/168442/

//////// header log.h ///////////
#include <string>
#include <fstream>
namespace log
{
extern const std::string path ;
extern std::ofstream out ;
void flush() ;
}
//////// implementation log.cpp ///////////
// #include "log.h"
#include <ctime>
namespace log
{
void flush() { out.flush() ; }
namespace // detail
{
std::string time_stamp()
{
const auto now = std::time(nullptr) ;
char cstr[256] {};
return std::strftime( cstr, sizeof(cstr), "%Y%m%d_%H%M%S", std::localtime(&now) ) ? cstr : "" ;
}
std::string path_to_session_log_file()
{
static const std::string log_dir = "/tmp/log/" ;
static const std::string log_file_name = "log.txt" ;
return log_dir + time_stamp() + '_' + log_file_name ;
}
}
const std::string path = path_to_session_log_file() ;
std::ofstream out = std::ofstream( path );
}
//////////// usage main.cpp ///////////////
// #include "log.h"
#include <iostream>
int main()
{
std::cout << "path: " << log::path << '\n' ;
log::out << "this is a test\n" ;
log::out << "this is another test\n" ;
log::flush() ;
std::cout << "\n--------------------\n" << std::ifstream( log::path ).rdbuf() ;
log::out << "this is the third test\n" ;
log::flush() ;
std::cout << "\n--------------------\n" << std::ifstream( log::path ).rdbuf() ;
}

posted on   yusisc  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2022-11-10 my tools in windows
2022-11-10 make vscode portable together with its extensions

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示