Merge master.
[dcpomatic.git] / src / lib / log.h
index d4de8ebde6ff466110b2b49ae67e51ab6ae6c6c9..3ad6516c11b7b56ee270c269967bd3d59177e464 100644 (file)
@@ -17,6 +17,9 @@
 
 */
 
+#ifndef DCPOMATIC_LOG_H
+#define DCPOMATIC_LOG_H
+
 /** @file src/log.h
  *  @brief A very simple logging class.
  */
 
 /** @class Log
  *  @brief A very simple logging class.
- *
- *  This class simply accepts log messages and writes them to a file.
- *  Its single nod to complexity is that it has a mutex to prevent
- *  multi-thread logging from clashing.
  */
 class Log
 {
 public:
-       Log (std::string f);
+       Log ();
+       virtual ~Log () {}
 
        enum Level {
                STANDARD = 0,
-               VERBOSE = 1
+               VERBOSE = 1,
+               TIMING = 2
        };
 
        void log (std::string m, Level l = STANDARD);
+       void microsecond_log (std::string m, Level l = STANDARD);
 
        void set_level (Level l);
+       void set_level (std::string l);
 
-private:
-       /** mutex to prevent simultaneous writes to the file */
+protected:     
+       /** mutex to protect the log */
        boost::mutex _mutex;
-       /** filename to write to */
-       std::string _file;
+       
+private:
+       virtual void do_log (std::string m) = 0;
+       
        /** level above which to ignore log messages */
        Level _level;
 };
+
+class FileLog : public Log
+{
+public:
+       FileLog (std::string file);
+
+private:
+       void do_log (std::string m);
+       /** filename to write to */
+       std::string _file;
+};
+
+#endif