// Copyright (2019-2023) Paul Scherrer Institute #ifndef JUNGFRAUJOCH_LOGGER_H #define JUNGFRAUJOCH_LOGGER_H #include #include #include #include #include #include "spdlog/spdlog.h" #include "spdlog/fmt/fmt.h" namespace spdlog { class logger; } class Logger { mutable std::mutex m; std::shared_ptr spdlog_logger; std::string service; std::string hostname; public: Logger(const std::string &service_name, const std::string &file_name = ""); void ErrorException(const std::exception &e); void Info(const std::string& msg) { spdlog_logger->info(msg); } void Warning(const std::string& msg) { spdlog_logger->warn(msg); } void Error(const std::string& msg) { spdlog_logger->error(msg); } void Debug(const std::string& msg) { spdlog_logger->debug(msg); } template void Info(fmt::format_string fmt, Args &&... args) { spdlog_logger->info(fmt, std::forward(args)...); } template void Error(fmt::format_string fmt, Args &&... args) { spdlog_logger->error(fmt, std::forward(args)...); } template void Debug(fmt::format_string fmt, Args &&... args) { spdlog_logger->debug(fmt, std::forward(args)...); } template void Warning(fmt::format_string fmt, Args &&... args) { spdlog_logger->warn(fmt, std::forward(args)...); } Logger& Verbose(bool input); }; #endif //JUNGFRAUJOCH_LOGGER_H