2024-12-20 04:46:10 +00:00
|
|
|
#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();
|
|
|
|
|
2024-12-20 00:00:00 +00:00
|
|
|
bool reconfigure_logger(
|
2024-12-20 04:46:10 +00:00
|
|
|
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();
|
|
|
|
|
2024-12-20 00:00:00 +00:00
|
|
|
std::shared_ptr<spdlog::logger> logger_ = nullptr;
|
2024-12-20 04:46:10 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // 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
|