42 lines
898 B
C++
42 lines
898 B
C++
// logger.hpp
|
|
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <string>
|
|
#include <ctime>
|
|
#include <chrono>
|
|
#include <iomanip>
|
|
#include <sstream>
|
|
|
|
enum class LogLevel
|
|
{
|
|
INFO,
|
|
WARN,
|
|
ERROR
|
|
};
|
|
|
|
class Logger
|
|
{
|
|
public:
|
|
static void set_log_to_file(const std::string &filename);
|
|
|
|
static void log(LogLevel level, const std::string &msg);
|
|
|
|
private:
|
|
static std::ofstream log_file;
|
|
static std::string current_log_filename;
|
|
static std::string get_time_string();
|
|
|
|
static void rotate_logs();
|
|
static size_t get_file_size(const std::string &filename);
|
|
|
|
static constexpr size_t MAX_LOG_FILE_SIZE = 10 * 1024 * 1024; // 10MB
|
|
static constexpr int MAX_LOG_BACKUP_COUNT = 5;
|
|
};
|
|
|
|
// 简化宏
|
|
#define LOG_INFO(msg) Logger::log(LogLevel::INFO, msg)
|
|
#define LOG_WARN(msg) Logger::log(LogLevel::WARN, msg)
|
|
#define LOG_ERROR(msg) Logger::log(LogLevel::ERROR, msg)
|