#ifndef AIRMAP_QT_LOGGER_H_ #define AIRMAP_QT_LOGGER_H_ #include #include #include namespace airmap { namespace qt { /// Logger is an airmap::Logger implementation that uses to /// Qt's logging facilities. class Logger : public airmap::Logger { public: /// logging_category returns a QLoggingCategory instance /// that enables calling code to fine-tune logging behavior of a Logger instance. QLoggingCategory& logging_category(); /// Logger initializes a new instance. Logger(); /// ~Logger cleans up all resources held by a Logger instance. ~Logger(); // From airmap::Logger void log(Severity severity, const char* message, const char* component) override; bool should_log(Severity severity, const char* message, const char* component) override; private: struct Private; std::unique_ptr d_; }; /// DispatchingLogger is an airmap::Logger implementation that dispatches to Qt's main /// event loop for logger invocation class DispatchingLogger : public airmap::Logger { public: /// DispatchingLogger initializes a new instance with 'next'. DispatchingLogger(const std::shared_ptr& next); /// ~DispatchingLogging cleans up all resources held a DispatchingLogger instance. ~DispatchingLogger(); // From airmap::Logger void log(Severity severity, const char* message, const char* component) override; bool should_log(Severity severity, const char* message, const char* component) override; private: struct Private; std::unique_ptr d_; }; } // namespace qt } // namespace airmap #endif // AIRMAP_QT_LOGGER_H_