From 31f61cdaa796957f703d3374ec5cec7e897fecbc Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 11 Aug 2015 23:41:26 +0100 Subject: Write client logs to syslog instead of stderr (/dev/null) --- libfusepp/fuseAppBase.cpp | 2 +- libfusepp/fuseAppBase.h | 5 ++++- netfs/fuse/Jamfile.jam | 4 ++++ netfs/fuse/netfs.cpp | 17 ++++++++++++++++- netfs/unittests/Jamfile.jam | 3 +++ netfs/unittests/mockFuse.cpp | 7 +++++++ netfs/unittests/mockFuse.h | 1 + 7 files changed, 36 insertions(+), 3 deletions(-) diff --git a/libfusepp/fuseAppBase.cpp b/libfusepp/fuseAppBase.cpp index 49f2d6b..b56b765 100644 --- a/libfusepp/fuseAppBase.cpp +++ b/libfusepp/fuseAppBase.cpp @@ -184,7 +184,7 @@ int FuseAppBase::fallocate(const char *, int, off_t, off_t, struct fuse_file_inf } int FuseAppBase::onError(const std::exception & e) throw() { - fprintf(stderr, "Unknown exception (what: %s)\n", e.what()); + log(LOG_ERR, stringf("Unknown exception (what: %s)\n", e.what())); return -ENOSYS; } diff --git a/libfusepp/fuseAppBase.h b/libfusepp/fuseAppBase.h index 1a4a0bc..a9be11b 100644 --- a/libfusepp/fuseAppBase.h +++ b/libfusepp/fuseAppBase.h @@ -7,6 +7,8 @@ #include #include #include +#include +#include #ifndef DLL_PUBLIC #define DLL_PUBLIC __attribute__ ((visibility ("default"))) #endif @@ -58,6 +60,7 @@ class DLL_PUBLIC FuseAppBase { virtual int flock(const char *, struct fuse_file_info *, int op); virtual int fallocate(const char *, int, off_t, off_t, struct fuse_file_info *); virtual int onError(const std::exception & err) throw(); + virtual void log(int level, const std::string &) const throw() = 0; virtual int fuse_opt_parse(struct fuse_args *args, void *data, const struct fuse_opt opts[], fuse_opt_proc_t proc) = 0; virtual int main(int, char **, const struct fuse_operations *) = 0; @@ -156,7 +159,7 @@ class DLL_PUBLIC FuseAppBase { return helper(a...); } catch (...) { - fprintf(stderr, "Unknown exception calling %s\n", typeid(f).name()); + fuseApp->log(LOG_ERR, stringf("Unknown exception calling %s\n", typeid(f).name())); return -ENOSYS; } } diff --git a/netfs/fuse/Jamfile.jam b/netfs/fuse/Jamfile.jam index 142221e..8413d1f 100644 --- a/netfs/fuse/Jamfile.jam +++ b/netfs/fuse/Jamfile.jam @@ -29,8 +29,11 @@ lib netfsClientConfiguration : ..//slicer ; +obj misc : ../../libmisc/misc.cpp ; + lib netfsClient : pch + misc netfsClientConfiguration [ glob *.cpp : netfs.cpp ] [ glob ../../libfusepp/fuse*.cpp ] @@ -66,6 +69,7 @@ lib netfsClient : ; exe netfs : + misc netfs.cpp : netfsClient fuse diff --git a/netfs/fuse/netfs.cpp b/netfs/fuse/netfs.cpp index 23996c2..945c599 100644 --- a/netfs/fuse/netfs.cpp +++ b/netfs/fuse/netfs.cpp @@ -1,8 +1,18 @@ #include "fuseApp.h" +#include class FuseImpl : public NetFS::FuseApp { public: - FuseImpl(const Ice::StringSeq & a) : NetFS::FuseApp(a) { } + FuseImpl(const Ice::StringSeq & a) : + NetFS::FuseApp(a) + { + openlog("netfs", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); + } + + ~FuseImpl() + { + closelog(); + } struct fuse_context * fuse_get_context() override { @@ -18,6 +28,11 @@ class FuseImpl : public NetFS::FuseApp { { return ::fuse_main(argc, argv, ops, this); } + + void log(int priority, const std::string & message) const throw() override + { + syslog(priority, "%s", message.c_str()); + } }; int diff --git a/netfs/unittests/Jamfile.jam b/netfs/unittests/Jamfile.jam index 74275c5..9aa8bda 100644 --- a/netfs/unittests/Jamfile.jam +++ b/netfs/unittests/Jamfile.jam @@ -9,6 +9,7 @@ lib Ice ; path-constant me : . ; lib testMocks : + ../../libmisc/misc.cpp [ glob mock*.cpp ] : IceUtil @@ -18,6 +19,8 @@ lib testMocks : ../daemon//netfsd ../fuse//netfsClient ../ice//netfsComms + BOOST_TEST_DYN_LINK + boost_utf ROOT=\"$(me)\" : : boost_system diff --git a/netfs/unittests/mockFuse.cpp b/netfs/unittests/mockFuse.cpp index a9e2cc1..4b92332 100644 --- a/netfs/unittests/mockFuse.cpp +++ b/netfs/unittests/mockFuse.cpp @@ -1,4 +1,5 @@ #include "mockFuse.h" +#include FuseMock::FuseMock(const std::string & ep, const Ice::StringSeq & a) : NetFS::FuseApp(a), @@ -45,6 +46,12 @@ FuseMock::ReadConfiguration(const std::string & path) const return c; } +void +FuseMock::log(int, const std::string & message) const throw() +{ + BOOST_MESSAGE(message); +} + FuseMockHost::FuseMockHost(const std::string & ep, const Ice::StringSeq & a) : app(new FuseMock(ep, a)), fuse(&app->ops) diff --git a/netfs/unittests/mockFuse.h b/netfs/unittests/mockFuse.h index e28fd5a..71b1c5e 100644 --- a/netfs/unittests/mockFuse.h +++ b/netfs/unittests/mockFuse.h @@ -10,6 +10,7 @@ class FuseMock : public NetFS::FuseApp { struct fuse_context * fuse_get_context() override; int fuse_opt_parse(struct fuse_args * args, void * data, const struct fuse_opt [], fuse_opt_proc_t proc) override; int main(int, char **, const struct fuse_operations * o) override; + void log(int, const std::string &) const throw() override; fuse_operations ops; -- cgit v1.2.3