feat: Integrate StillHammer Logger throughout GroveEngine

Replace manual spdlog logger creation (10+ lines) with StillHammer Logger (1 line).

Changes:
- IntraIOManager: Use createDomainLogger("IntraIOManager", "io")
- ModuleLoader: Use createDomainLogger("ModuleLoader", "engine")
- EngineFactory: Use createDomainLogger("EngineFactory", "engine")
- IOFactory: Use createDomainLogger("IOFactory", "io")
- SequentialModuleSystem: Use createDomainLogger("SequentialModuleSystem", "engine")
- ModuleFactory: Use createDomainLogger("ModuleFactory", "engine")
- DebugEngine: Use createDomainLogger("DebugEngine", "engine")
- ModuleSystemFactory: Use createDomainLogger("ModuleSystemFactory", "engine")
- CMakeLists.txt: Link stillhammer_logger to grove_impl

Benefits:
- Domain-organized logs: logs/io/, logs/engine/
- Auto snake_case conversion: IntraIOManager → intra_iomanager.log
- Cleaner code: 1 line instead of 10+
- Consistent logging across codebase
- Build and tests pass successfully

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
StillHammer 2025-11-20 03:11:36 +08:00
parent 3923e3cbbe
commit 7e76ed47a4
9 changed files with 18 additions and 106 deletions

View File

@ -74,6 +74,7 @@ if(GROVE_BUILD_IMPLEMENTATIONS)
target_link_libraries(grove_impl PUBLIC
GroveEngine::core
topictree::topictree
stillhammer_logger
OpenSSL::Crypto
spdlog::spdlog
${CMAKE_DL_LIBS}

View File

@ -7,31 +7,16 @@
#include <fstream>
#include <filesystem>
#include <sstream>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <logger/Logger.h>
namespace grove {
using json = nlohmann::json;
DebugEngine::DebugEngine() {
// Create comprehensive logger with multiple sinks
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/debug_engine.log", true);
console_sink->set_level(spdlog::level::trace); // FULL VERBOSE MODE
file_sink->set_level(spdlog::level::trace);
logger = std::make_shared<spdlog::logger>("DebugEngine",
spdlog::sinks_init_list{console_sink, file_sink});
logger->set_level(spdlog::level::trace);
logger->flush_on(spdlog::level::debug);
// Register logger globally
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("DebugEngine", "engine");
logger->info("🔧 DebugEngine constructor - Maximum logging enabled");
logger->debug("📊 Console sink level: DEBUG, File sink level: TRACE");
logger->trace("🏗️ DebugEngine object created at address: {}", static_cast<void*>(this));
}

View File

@ -2,7 +2,7 @@
#include <fstream>
#include <algorithm>
#include <nlohmann/json.hpp>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <logger/Logger.h>
using json = nlohmann::json;
@ -183,15 +183,7 @@ std::shared_ptr<spdlog::logger> EngineFactory::getFactoryLogger() {
static std::shared_ptr<spdlog::logger> logger = nullptr;
if (!logger) {
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_level(spdlog::level::debug);
logger = std::make_shared<spdlog::logger>("EngineFactory", console_sink);
logger->set_level(spdlog::level::debug);
logger->flush_on(spdlog::level::debug);
// Register globally
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("EngineFactory", "engine");
}
return logger;

View File

@ -2,7 +2,7 @@
#include <algorithm>
#include <random>
#include <functional>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <logger/Logger.h>
// Include implemented transports
#include <grove/IntraIO.h>
@ -266,14 +266,7 @@ std::shared_ptr<spdlog::logger> IOFactory::getFactoryLogger() {
static std::shared_ptr<spdlog::logger> logger = nullptr;
if (!logger) {
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_level(spdlog::level::debug);
logger = std::make_shared<spdlog::logger>("IOFactory", console_sink);
logger->set_level(spdlog::level::debug);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("IOFactory", "io");
}
return logger;

View File

@ -2,26 +2,13 @@
#include <grove/IntraIO.h>
#include <grove/JsonDataNode.h>
#include <stdexcept>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <logger/Logger.h>
namespace grove {
IntraIOManager::IntraIOManager() {
// Create logger
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/intra_io_manager.log", true);
console_sink->set_level(spdlog::level::debug);
file_sink->set_level(spdlog::level::trace);
logger = std::make_shared<spdlog::logger>("IntraIOManager",
spdlog::sinks_init_list{console_sink, file_sink});
logger->set_level(spdlog::level::trace);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
// Create logger with domain organization
logger = stillhammer::createDomainLogger("IntraIOManager", "io");
logger->info("🌐🔗 IntraIOManager created - Central message router initialized");
// Start batch flush thread

View File

@ -2,27 +2,14 @@
#include <filesystem>
#include <dlfcn.h>
#include <algorithm>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <logger/Logger.h>
namespace fs = std::filesystem;
namespace grove {
ModuleFactory::ModuleFactory() {
// Create logger with file and console output
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/module_factory.log", true);
console_sink->set_level(spdlog::level::info);
file_sink->set_level(spdlog::level::trace);
logger = std::make_shared<spdlog::logger>("ModuleFactory",
spdlog::sinks_init_list{console_sink, file_sink});
logger->set_level(spdlog::level::trace);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("ModuleFactory", "engine");
logger->info("=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=" "=");
logger->info("🏭 MODULE FACTORY INITIALIZED");

View File

@ -6,20 +6,12 @@
#include <unistd.h>
#include <filesystem>
#include <thread>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <logger/Logger.h>
namespace grove {
ModuleLoader::ModuleLoader() {
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_level(spdlog::level::debug);
logger = std::make_shared<spdlog::logger>("ModuleLoader", console_sink);
logger->set_level(spdlog::level::debug);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("ModuleLoader", "engine");
logger->info("🔧 ModuleLoader initialized");
}

View File

@ -1,7 +1,7 @@
#include <grove/ModuleSystemFactory.h>
#include <algorithm>
#include <thread>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <logger/Logger.h>
// Include implemented systems
#include <grove/SequentialModuleSystem.h>
@ -210,14 +210,7 @@ std::shared_ptr<spdlog::logger> ModuleSystemFactory::getFactoryLogger() {
static std::shared_ptr<spdlog::logger> logger = nullptr;
if (!logger) {
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_level(spdlog::level::debug);
logger = std::make_shared<spdlog::logger>("ModuleSystemFactory", console_sink);
logger->set_level(spdlog::level::debug);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
logger = stillhammer::createDomainLogger("ModuleSystemFactory", "engine");
}
return logger;

View File

@ -1,30 +1,12 @@
#include <grove/SequentialModuleSystem.h>
#include <grove/JsonDataNode.h>
#include <stdexcept>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <logger/Logger.h>
namespace grove {
SequentialModuleSystem::SequentialModuleSystem() {
// Try to get existing logger first (avoid duplicate registration)
logger = spdlog::get("SequentialModuleSystem");
if (!logger) {
// Create logger with file and console output
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/sequential_system.log", true);
console_sink->set_level(spdlog::level::trace); // FULL VERBOSE MODE
file_sink->set_level(spdlog::level::trace);
logger = std::make_shared<spdlog::logger>("SequentialModuleSystem",
spdlog::sinks_init_list{console_sink, file_sink});
logger->set_level(spdlog::level::trace);
logger->flush_on(spdlog::level::debug);
spdlog::register_logger(logger);
}
logger = stillhammer::createDomainLogger("SequentialModuleSystem", "engine");
logSystemStart();
lastProcessTime = std::chrono::high_resolution_clock::now();