3333#include < libfreenect2/threading.h>
3434#include < libfreenect2/registration.h>
3535#include < libfreenect2/packet_pipeline.h>
36- #include < libfreenect2/logging .h>
36+ #include < libfreenect2/logger .h>
3737#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
3838#include " viewer.h"
3939#endif
@@ -46,6 +46,29 @@ void sigint_handler(int s)
4646 protonect_shutdown = true ;
4747}
4848
49+ // The following demostrates how to create a custom logger
50+ #include < fstream>
51+ #include < cstdlib>
52+ class MyFileLogger : public libfreenect2 ::Logger
53+ {
54+ private:
55+ std::ofstream logfile_;
56+ public:
57+ MyFileLogger (const char *filename)
58+ : logfile_(filename)
59+ {
60+ level_ = Debug;
61+ }
62+ bool good ()
63+ {
64+ return logfile_.good ();
65+ }
66+ virtual void log (Level level, const std::string &message)
67+ {
68+ logfile_ << " [" << libfreenect2::Logger::level2str (level) << " ] " << message << std::endl;
69+ }
70+ };
71+
4972int main (int argc, char *argv[])
5073{
5174 std::string program_path (argv[0 ]);
@@ -61,6 +84,9 @@ int main(int argc, char *argv[])
6184 libfreenect2::Freenect2 freenect2;
6285 // create a console logger with debug level (default is console logger with info level)
6386 libfreenect2::setGlobalLogger (libfreenect2::createConsoleLogger (libfreenect2::Logger::Debug));
87+ MyFileLogger *filelogger = new MyFileLogger (getenv (" LOGFILE" ));
88+ if (filelogger->good ())
89+ libfreenect2::setGlobalLogger (filelogger);
6490
6591 libfreenect2::Freenect2Device *dev = 0 ;
6692 libfreenect2::PacketPipeline *pipeline = 0 ;
0 commit comments