WeChatFerry/spy/log.cpp

53 lines
1.5 KiB
C++
Raw Normal View History

2023-05-21 20:29:21 +08:00
#include <filesystem>
2022-10-15 20:25:42 +08:00
#include "log.h"
2023-05-21 20:29:21 +08:00
#include "util.h"
2022-10-15 20:25:42 +08:00
#define LOGGER_NAME "WCF"
2023-05-21 20:29:21 +08:00
#define LOGGER_FILE_NAME "/logs/wcf.txt"
2022-10-15 20:25:42 +08:00
#define LOGGER_MAX_SIZE 1024 * 1024 * 10 // 10M
#define LOGGER_MAX_FILES 10 // 10 files
2023-05-21 20:29:21 +08:00
void InitLogger(std::string path)
2022-10-15 20:25:42 +08:00
{
2023-05-21 20:29:21 +08:00
static std::shared_ptr<spdlog::logger> logger = nullptr;
if (logger != nullptr) {
2022-10-15 20:25:42 +08:00
return;
}
2023-05-21 20:29:21 +08:00
auto filename = std::filesystem::path(path + LOGGER_FILE_NAME).make_preferred().string();
try {
logger = spdlog::rotating_logger_mt(LOGGER_NAME, filename, LOGGER_MAX_SIZE, LOGGER_MAX_FILES);
} catch (const spdlog::spdlog_ex &ex) {
MessageBox(NULL, String2Wstring(ex.what()).c_str(), L"Init LOGGER ERROR", 0);
}
2022-10-15 20:25:42 +08:00
2023-05-21 20:29:21 +08:00
spdlog::set_default_logger(logger);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] [%n] [%s::%#::%!] %v");
2023-02-23 00:01:14 +08:00
#if SPDLOG_ACTIVE_LEVEL <= SPDLOG_LEVEL_DEBUG
spdlog::set_level(spdlog::level::debug);
2023-05-21 20:29:21 +08:00
logger->flush_on(spdlog::level::debug);
2023-02-23 00:01:14 +08:00
#else
2023-05-21 20:29:21 +08:00
logger->flush_on(spdlog::level::info);
2023-02-23 00:01:14 +08:00
#endif
2023-02-22 23:38:14 +08:00
LOG_DEBUG("InitLogger with debug level");
2022-10-15 20:25:42 +08:00
}
2023-02-23 00:01:14 +08:00
#if SPDLOG_ACTIVE_LEVEL <= SPDLOG_LEVEL_DEBUG
#define BUF_SIZE (1024 * 1024)
static char buf[BUF_SIZE] = { 0 };
void log_buffer(uint8_t *buffer, size_t len)
{
2023-04-30 15:16:51 +08:00
size_t j = sprintf_s(buf, BUF_SIZE, "BUF[%ld]: ", len);
2023-02-23 00:01:14 +08:00
for (size_t i = 0; i < len; i++) {
j += sprintf_s(buf + j, BUF_SIZE, "%02X ", buffer[i]);
if (j > BUF_SIZE - 3) {
break;
}
}
LOG_DEBUG(buf);
}
#endif