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