* @brief A very simple logging class.
*/
-#include <fstream>
#include <time.h>
+#include <cstdio>
#include "log.h"
+#include "cross.h"
+
+#include "i18n.h"
using namespace std;
Log::Log ()
- : _level (VERBOSE)
+ : _level (STANDARD)
{
}
string a = ctime (&t);
stringstream s;
- s << a.substr (0, a.length() - 1) << ": " << m;
+ s << a.substr (0, a.length() - 1) << N_(": ") << m;
do_log (s.str ());
}
gettimeofday (&tv, 0);
stringstream s;
- s << tv.tv_sec << ":" << tv.tv_usec << " " << m;
+ s << tv.tv_sec << N_(":") << tv.tv_usec << N_(" ") << m;
do_log (s.str ());
}
_level = l;
}
+void
+Log::set_level (string l)
+{
+ if (l == N_("verbose")) {
+ set_level (VERBOSE);
+ return;
+ } else if (l == N_("timing")) {
+ set_level (TIMING);
+ return;
+ }
+
+ set_level (STANDARD);
+}
/** @param file Filename to write log to */
-FileLog::FileLog (string file)
+FileLog::FileLog (boost::filesystem::path file)
: _file (file)
{
void
FileLog::do_log (string m)
{
- ofstream f (_file.c_str(), fstream::app);
- f << m << "\n";
+ FILE* f = fopen_boost (_file, "a");
+ if (!f) {
+ cout << "(could not log to " << _file.string() << "): " << m << "\n";
+ return;
+ }
+
+ fprintf (f, "%s\n", m.c_str ());
+ fclose (f);
}