Skip to content

Commit 3da9d4a

Browse files
committed
Add an example on how to create custom logger
Also export level2str() in Logger for external use.
1 parent d7f6688 commit 3da9d4a

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

examples/protonect/Protonect.cpp

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
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+
4972
int 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;

examples/protonect/include/libfreenect2/logger.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class LIBFREENECT2_API Logger
4747
Debug = 4,
4848
};
4949
static Level getDefaultLevel();
50+
static std::string level2str(Level level);
5051

5152
virtual ~Logger();
5253

examples/protonect/src/logging.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Logger::Level Logger::level() const
7474
return level_;
7575
}
7676

77-
std::string level2str(const Logger::Level &l)
77+
std::string Logger::level2str(Level l)
7878
{
7979
switch(l)
8080
{

0 commit comments

Comments
 (0)