C++日志异常到文件,不同的输出
c++ log exception to file, different output
我想将异常记录到文件中,并将其发送到控制台。我的问题是我得到了不同的输出。
void log(std::string str, std::exception e){
std::ofstream errorfile;
errorfile.open("errorlog.txt", std::ios::out | std::ios::app);
errorfile << str << std::endl;
errorfile << e.what() << std::endl;
errorfile.close();
}
main()
{
try
{
doSomething();
}
catch(std::exception& e)
{
std::string str = "functionname()";
std::cout << str << std::endl;
std::cerr << e.what() << std::endl;
log(str, e);
}
}
现在我得到一个控制台输出,如下所示:
fuctionname()
bind: Address already in use
以及日志文件中的不同输出:
functionname()
std::exception
我认识到我使用std::cerr
作为我的控制台输出,但我不知道如何使用std::cerr
登录到文件。
在函数void log(std::string str, std::exception e)
中,创建异常的副本。
修改函数以类似于void log(std::string &str, std::exception &e)
获取对此对象的引用以保留相同的异常/消息,而不是创建带有空白字段的新异常/消息。
通过这样做,您还将提高性能。
相关文章:
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- VI工作室代码错误无法打开输出文件主.exe
- 在代码块中查找输出文件
- 将未签名的字符写入输出文件
- 为什么我的代码不写入输出文件?
- 完成搜索任务时为空输出文件
- 如何将地图<列表<string>、矢量<string>>输出到输出文件?
- 无法在代码块 IDE 中打开输出文件.exe
- C++:更改 IF 语句中的输出文件
- 编译 gsoap 输出文件 (onvif) 时出现问题
- C++击球平均值程序使用输入/输出文件打印名称,平均值,最高/最低平均值时遇到麻烦
- while 循环中的流输出文件() 通常生成空文件
- 如何使用 Docker 访问输出文件
- 提升进程间共享内存删除、权限和输出文件
- 查找素数,然后将质数放入输出文件中
- GDB / C++ - 根据循环条件将多个变量记录到输出文件中
- 带有文件结束函数的 while 循环重复输出文件中的最后一个数字两次
- 我的输出文件未显示解决方案
- 输入文件中的第一个字符是输出文件中的最后一个字符,反之亦然
- C++,我正在尝试创建一个有效的.bmp输出文件