在c++中实现最小日志程序
Implement Minimal logging program in c++
我正在为数据库引擎开发一个基于磁盘的树,我喜欢为我的程序维护一个日志文件。我基本上需要两种功能从日志程序。它必须允许我将消息记录到日志文件中,并且还必须写入我将其作为参数传递到日志文件中的任何变量。我只需要这两个函数。第一个是相当容易实现的,但我发现很难实现第二个。我想传递任意数量的任意类型的参数给日志程序,以便将其写入日志文件。我试着用变量参数函数实现第二个,但问题是我们必须知道传递的变量的类型。我相信一定有办法做到这一点。有人能指点我一下吗?
log4c++提供了您正在寻找的功能。
如果这对你来说有点太重了,你可以使用模板做类似的事情。比如:
class log
{
private:
std::ostream& stream;
public:
log(std::ostream& src) : stream(src) {}
...
std::ostream& getStream() { return stream; }
}
template <typename T> log& operator<<(log&, const T& val)
{
log.getStream() << val;
return log;
}
这里的log::stream
是您定义的用于输出到文件,控制台或其他内容的std::ostream
实例。您可以通过区分不同类型的日志事件来使它更漂亮一些。
看看Dr Dobs文章中这个简单日志系统的实现:http://drdobbs.com/cpp/201804215
它是基于模板的,具有日志级别(如果不需要,在运行时不会产生任何开销)并且很小
相关文章:
- Log4net,将日志消息从 c++ dll 发送到 c# 应用程序?
- 可视化如何在我的C++程序中最好地使用相同的Boost日志
- 程序由于日志而阻塞
- BOOST ::日志是每次运行应用程序时都可能旋转文件
- Mac OS X:应用程序可以创建日志文件
- C :如何使用log4cplus的套接字应用程序将日志发送到Logstash服务器
- 我无法弄清楚我的程序的问题,即使我已经查看了错误日志消息
- 多线程应用程序中的独立日志记录
- 如何正确退出使用提升日志的程序
- 当程序遇到故障时,如何在信号处理函数中写入日志和上传日志到MYSQL
- 如何从Windows XP下的程序中知道或更改Windows事件日志的大小
- 应用程序崩溃 C++/MFC 的通用日志
- 这是C ++程序领域中最流行的开源日志记录软件/程序
- 该程序不会在任何地方打印系统日志?
- 如何将我的应用程序生成的标准 Mac OS X 日志输出重定向到文件
- 如何使用Qt Windows中的设置路径属性从命令行运行应用程序(.exe)时在命令行上打印日志
- 将我的应用程序与黑莓10中的呼叫日志核心应用程序集成
- 在c++中实现最小日志程序
- 日志程序在一个单独的c++线程中
- 多个日志程序写入一个文件