我为记录编写了自己的简单类.我明白我最好使用某种类型的库(boost.log,log4cpp?)但是让我们讨论我的简单类:
#include "stdafx.h"
#include "Logger.h"
Logger::Logger(std::string fileName)
{
logFile.open(fileName);
}
Logger::~Logger(void)
{
logFile.close();
}
void Logger::Error(std::string message) {
logFile << message << std::endl;
}
void Logger::Debug(std::string message) {
logFile << message << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
"Error code: %x", code.怎么做?Debug如果LOG_DEBUG没有设置编译符号,我想要排除方法.在C#中,我可以[Conditional("LOG_DEBUG")]在方法声明之前添加,但现在在c ++中这样做?upd关于1我已经尝试了它并且它的工作原理:
void Logger::Debug(std::string message, ...) {
va_list arglist;
fprintf(pFile, message.c_str(), arglist);
Run Code Online (Sandbox Code Playgroud)
在我看来,最简单的方法是使用宏:
#define LOG_DEBUG(logger, output) \
do { logger.getStream() << "DEBUG: " << output << std::endl; } while (0)
LOG_DEBUG(logger, "Some value = " << some_value);
Run Code Online (Sandbox Code Playgroud)
这将允许您使用所有普通的C++流操纵器.
至于第二部分,它也是简单的预处理器技巧:
#ifdef DEBUG
# define LOG_DEBUG(logger, output) do { ... } while (0)
#else
# define LOG_DEBUG(logger, output)
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |