#pragma once #include #include #include #include #include #include "libvideo2x_export.h" namespace video2x { namespace logger_manager { class LIBVIDEO2X_API LoggerManager { public: LoggerManager(const LoggerManager &) = delete; LoggerManager &operator=(const LoggerManager &) = delete; static LoggerManager &instance(); std::shared_ptr logger(); void reconfigure_logger( const std::string &logger_name, const std::vector &sinks, const std::string &pattern = "%+" ); bool set_log_level(const std::string &level_str); void hook_ffmpeg_logging(); void unhook_ffmpeg_logging(); private: LoggerManager(); std::shared_ptr logger_; }; } // namespace logger_manager // Convenience function to get the logger instance inline std::shared_ptr logger() { return logger_manager::LoggerManager::instance().logger(); } } // namespace video2x