3
我想打开每个程序运行的新日志文件,因此我使用当前时间创建了一个文件名。boost :: posix_time在发布版本中失败
FILE * fplog;
void OpenLog()
{
boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
char buf[256];
sprintf(buf,"ecrew%d%02d%02d_%02d%02d%02d.log",
now.date().year(),now.date().month(),now.date().day(),
now.time_of_day().hours(),now.time_of_day().minutes(),now.time_of_day().seconds());
fplog = fopen(buf,"w");
}
这工作完全在调试版本,其名称如
ecrew20110309_141506.log
但是相同的代码奇怪的失败,在一份新闻稿中建立
ecrew198619589827196617_141338.log
顺便说一句,这也失败了生产文件以相同的方式:
boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
char buf[256];
boost::gregorian::date day (boost::gregorian::day_clock::local_day());
sprintf(buf,"ecrew%d%02d%02d_%02d%02d%02d.log",
day.year(),day.month(),day.day(),
now.time_of_day().hours(),now.time_of_day().minutes(),now.time_of_day().seconds());
fplog = fopen(buf,"w");
这工作:
boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
char buf[256];
sprintf(buf,"ecrew%s_%02d%02d%02d.log",
to_iso_string(boost::gregorian::day_clock::local_day()).c_str(),
now.time_of_day().hours(),now.time_of_day().minutes(),now.time_of_day().seconds());
fplog = fopen(buf,"w");
我还是很好奇,为什么前两个版本在发布版本中失败,但在调试工作。
谢谢,这看起来很有趣。我现在正在处理其他事情,但我会尽力回到测试您的解决方法。 – ravenspoint 2011-06-17 13:48:12
解决方法有效。 – ravenspoint 2011-06-19 16:12:50
有没有办法可以将这个通知给增强开发者?该错误仍然存在,在提升1.48! – scippie 2012-02-17 14:57:53