| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Logger.h - DLL 内部简易日志
- // 实现:OutputDebugStringW + 可选文件输出(%TEMP%\CommModifyKit.log)
- // 不依赖 CommModifyService 的 Logger(独立项目原则)
- #pragma once
- #include "pch.h"
- namespace commkit {
- class Logger {
- public:
- enum class Level {
- Debug = 0,
- Info,
- Warning,
- Error
- };
- // 单例访问
- static Logger& Instance();
- // 设置日志级别(低于此级别的不输出)
- void SetLevel(Level level);
- // 启用/禁用文件输出
- void EnableFileOutput(bool enable);
- // 日志接口
- void Log(Level level, const std::string& message);
- // 便捷方法
- void Debug(const std::string& msg) { Log(Level::Debug, msg); }
- void Info(const std::string& msg) { Log(Level::Info, msg); }
- void Warning(const std::string& msg) { Log(Level::Warning, msg); }
- void Error(const std::string& msg) { Log(Level::Error, msg); }
- private:
- Logger();
- ~Logger();
- Logger(const Logger&) = delete;
- Logger& operator=(const Logger&) = delete;
- // 将日志写入文件(追加模式)
- void WriteToFile(const std::wstring& line);
- // 将字节串转宽字符串(用于 OutputDebugStringW)
- std::wstring StringToWString(const std::string& str) const;
- // 格式化日志行:[时间][级别] 消息
- std::wstring FormatLine(Level level, const std::string& message);
- Level level_ = Level::Info;
- bool file_output_enabled_ = false;
- std::mutex file_mutex_;
- };
- } // namespace commkit
- // 全局便捷日志宏(避免每次写 Logger::Instance().XXX)
- #define LOG_DEBUG(msg) commkit::Logger::Instance().Debug(msg)
- #define LOG_INFO(msg) commkit::Logger::Instance().Info(msg)
- #define LOG_WARNING(msg) commkit::Logger::Instance().Warning(msg)
- #define LOG_ERROR(msg) commkit::Logger::Instance().Error(msg)
|