|
| 1 | +// Copyright (c) 2020 Jisang Yoon |
| 2 | +// All rights reserved. |
| 3 | +// |
| 4 | +// This source code is licensed under the Apache 2.0 license found in the |
| 5 | +// LICENSE file in the root directory of this source tree. |
| 6 | + |
| 7 | +// reference: https://github.com/kakao/buffalo/blob/5f571c2c7d8227e6625c6e538da929e4db11b66d/lib/misc/log.cc |
| 8 | +#pragma once |
| 9 | +#include <memory> |
| 10 | + |
| 11 | +#define SPDLOG_EOL "" |
| 12 | +#define SPDLOG_TRACE_ON |
| 13 | +#include "spdlog/spdlog.h" |
| 14 | +#include "spdlog/sinks/stdout_color_sinks.h" |
| 15 | + |
| 16 | +#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) |
| 17 | + |
| 18 | +#define INFO(x, ...) logger_->info("[{}:{}] " x "\n", __FILENAME__, __LINE__, __VA_ARGS__); |
| 19 | +#define DEBUG(x, ...) logger_->debug("[{}:{}] " x "\n", __FILENAME__, __LINE__, __VA_ARGS__); |
| 20 | +#define WARN(x, ...) logger_->warn("[{}:{}] " x "\n", __FILENAME__, __LINE__, __VA_ARGS__); |
| 21 | +#define TRACE(x, ...) logger_->trace("[{}:{}] " x "\n", __FILENAME__, __LINE__, __VA_ARGS__); |
| 22 | +#define CRITICAL(x, ...) logger_->critical("[{}:{}] " x "\n", __FILENAME__, __LINE__, __VA_ARGS__); |
| 23 | + |
| 24 | +#define INFO0(x) logger_->info("[{}:{}] " x "\n", __FILENAME__, __LINE__); |
| 25 | +#define DEBUG0(x) logger_->debug("[{}:{}] " x "\n", __FILENAME__, __LINE__); |
| 26 | +#define WARN0(x) logger_->warn("[{}:{}] " x "\n", __FILENAME__, __LINE__); |
| 27 | +#define TRACE0(x) logger_->trace("[{}:{}] " x "\n", __FILENAME__, __LINE__); |
| 28 | +#define CRITICAL0(x) logger_->critical("[{}:{}] " x "\n", __FILENAME__, __LINE__); |
| 29 | + |
| 30 | +namespace cusim { |
| 31 | + |
| 32 | +class CuHNSWLogger { |
| 33 | + public: |
| 34 | + CuHNSWLogger(); |
| 35 | + std::shared_ptr<spdlog::logger>& get_logger(); |
| 36 | + void set_log_level(int level); |
| 37 | + int get_log_level(); |
| 38 | + |
| 39 | + private: |
| 40 | + static int global_logging_level_; |
| 41 | + std::shared_ptr<spdlog::logger> logger_; |
| 42 | +}; // class CuHNSWLogger |
| 43 | + |
| 44 | +} // namespace cusim |
0 commit comments