video2x/include/libvideo2x/logger_manager.h
k4yt3x 7b8e186207
feat(logger): improve logger initialization
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-20 00:00:00 +00:00

49 lines
1.0 KiB
C++

#pragma once
#include <memory>
#include <string>
#include <vector>
#include <spdlog/logger.h>
#include <spdlog/sinks/sink.h>
#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<spdlog::logger> logger();
bool reconfigure_logger(
const std::string &logger_name,
const std::vector<spdlog::sink_ptr> &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<spdlog::logger> logger_ = nullptr;
};
} // namespace logger_manager
// Convenience function to get the logger instance
inline std::shared_ptr<spdlog::logger> logger() {
return logger_manager::LoggerManager::instance().logger();
}
} // namespace video2x