* @brief A very simple logging class.
*/
-#include <time.h>
-#include <cstdio>
#include "log.h"
#include "cross.h"
#include "config.h"
#include "safe_stringstream.h"
+#include <time.h>
+#include <cstdio>
#include "i18n.h"
int const Log::TYPE_GENERAL = 0x1;
int const Log::TYPE_WARNING = 0x2;
int const Log::TYPE_ERROR = 0x4;
-int const Log::TYPE_TIMING = 0x8;
+int const Log::TYPE_DEBUG = 0x8;
+int const Log::TYPE_TIMING = 0x10;
Log::Log ()
: _types (0)
SafeStringStream s;
s << tv.tv_sec << N_(":") << tv.tv_usec << N_(" ") << m;
do_log (s.str ());
-}
+}
+
+void
+Log::dcp_log (dcp::NoteType type, string m)
+{
+ switch (type) {
+ case dcp::DCP_PROGRESS:
+ log (m, TYPE_GENERAL);
+ break;
+ case dcp::DCP_ERROR:
+ log (m, TYPE_ERROR);
+ break;
+ case dcp::DCP_NOTE:
+ log (m, TYPE_WARNING);
+ break;
+ }
+}
void
Log::set_types (int t)
}
string
-FileLog::head_and_tail () const
+FileLog::head_and_tail (int amount) const
{
boost::mutex::scoped_lock lm (_mutex);
- uintmax_t head_amount = 1024;
- uintmax_t tail_amount = 1024;
+ uintmax_t head_amount = amount;
+ uintmax_t tail_amount = amount;
uintmax_t size = boost::filesystem::file_size (_file);
if (size < (head_amount + tail_amount)) {
int N = fread (buffer, 1, head_amount, f);
buffer[N] = '\0';
- out += buffer;
+ out += string (buffer);
- fseek (f, tail_amount, SEEK_END);
-
- N = fread (buffer, 1, tail_amount, f);
- buffer[N] = '\0';
- out += buffer;
+ if (tail_amount > 0) {
+ out += "\n .\n .\n .\n";
- delete[] buffer;
+ fseek (f, - tail_amount - 1, SEEK_END);
+
+ N = fread (buffer, 1, tail_amount, f);
+ buffer[N] = '\0';
+ out += string (buffer) + "\n";
+ }
+ delete[] buffer;
fclose (f);
return out;