Skip to content

Commit e223268

Browse files
committed
replace logger with spdlog
1 parent 2b5b7fe commit e223268

16 files changed

+86
-491
lines changed

Include/Common/Logger.hpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
#include <memory>
4+
#include <spdlog/logger.h>
5+
#include <spdlog/spdlog.h>
6+
7+
namespace sb
8+
{
9+
using Logger = spdlog::logger;
10+
using LoggerSPtr = std::shared_ptr<Logger>;
11+
using LoggerPtr = std::unique_ptr<Logger>;
12+
13+
using LoggerSink = spdlog::sinks::sink;
14+
using LoggerSinkSPtr = std::shared_ptr<LoggerSink>;
15+
using LoggerSinkPtr = std::unique_ptr<LoggerSink>;
16+
17+
using LogLevel = spdlog::level::level_enum;
18+
} // namespace sb

Include/Engine/EngineDependencies.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#pragma once
22

3-
#include "SevenBit/DI.hpp"
4-
#include "SevenBit/Conf.hpp"
5-
#include "Log/ILogger.hpp"
3+
#include "Common/Logger.hpp"
64
#include "Router/IRouter.hpp"
75
#include "Services/IEnvironment.hpp"
86
#include "Services/IServerSettingsProvider.hpp"
7+
#include "SevenBit/Conf.hpp"
8+
#include "SevenBit/DI.hpp"
99

1010
namespace sb
1111
{
@@ -19,7 +19,7 @@ namespace sb
1919

2020
cf::IConfiguration &_configuration = _serviceProvider.getService<cf::IConfiguration>();
2121
IEnvironment &_environment = _serviceProvider.getService<IEnvironment>();
22-
ILogger &_logger = _serviceProvider.getService<ILogger>();
22+
Logger &_logger = _serviceProvider.getService<Logger>();
2323

2424
IServerSettingsProvider &_settingProvider = _serviceProvider.getService<IServerSettingsProvider>();
2525

@@ -40,7 +40,7 @@ namespace sb
4040

4141
IEnvironment &getEnvironment() { return _environment; }
4242

43-
ILogger &getLogger() { return _logger; }
43+
Logger &getLogger() { return _logger; }
4444

4545
IServerSettingsProvider &getSettingsProvider() { return _settingProvider; }
4646

Include/Engine/IWebApplicationEngine.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
#include <typeindex>
66

77
#include "Common/Export.hpp"
8-
#include "SevenBit/Conf.hpp"
9-
#include "SevenBit/DI.hpp"
8+
#include "Common/Logger.hpp"
109
#include "Engine/Action.hpp"
1110
#include "Engine/EngineDependencies.hpp"
1211
#include "Engine/IEndpoint.hpp"
13-
#include "Log/ILogger.hpp"
1412
#include "Middlewares/MiddlewareCreator.hpp"
1513
#include "Router/IRouter.hpp"
1614
#include "Services/IEnvironment.hpp"
15+
#include "SevenBit/Conf.hpp"
16+
#include "SevenBit/DI.hpp"
1717

1818
namespace sb
1919
{
@@ -43,7 +43,7 @@ namespace sb
4343

4444
virtual const IEnvironment &getEnvironment() = 0;
4545

46-
virtual ILogger &getLogger() = 0;
46+
virtual Logger &getLogger() = 0;
4747

4848
virtual di::ServiceProvider &getServiceProvider() = 0;
4949

Include/Engine/LoggingBuilder.hpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#pragma once
2+
#include <spdlog/sinks/sink.h>
3+
#include <spdlog/spdlog.h>
4+
#include <string_view>
5+
6+
#include "Common/Logger.hpp"
7+
#include "SevenBit/DI.hpp"
8+
9+
namespace sb
10+
{
11+
class LoggingBuilder final
12+
{
13+
private:
14+
di::ServiceCollection _logProviders;
15+
16+
public:
17+
using Ptr = std::unique_ptr<LoggingBuilder>;
18+
19+
di::ServiceCollection &getServices() { return _logProviders; }
20+
21+
void clearProviders() { getServices().removeAll<LoggerSink>(); }
22+
23+
template <class F> void add(F &&factory) { getServices().addTransient<LoggerSink>(std::forward<F>(factory)); }
24+
25+
template <class T> void add() { getServices().addSingleton<LoggerSink, T>(); }
26+
27+
template <class T> bool contains() { return getServices().contains<LoggerSink, T>(); }
28+
29+
template <class T> bool remove() { return getServices().remove<LoggerSink, T>(); }
30+
};
31+
} // namespace sb

Include/Engine/WebApplication.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
#include <tao/json/forward.hpp>
77

88
#include "Common/Utils.hpp"
9-
#include "SevenBit/DI.hpp"
10-
#include "SevenBit/Conf.hpp"
119
#include "Engine/FromBody.hpp"
1210
#include "Engine/FromHeader.hpp"
1311
#include "Engine/FromQuery.hpp"
@@ -30,6 +28,8 @@
3028
#include "Router/IRouter.hpp"
3129
#include "Services/Environment.hpp"
3230
#include "Services/IContextAccessor.hpp"
31+
#include "SevenBit/Conf.hpp"
32+
#include "SevenBit/DI.hpp"
3333

3434
namespace sb
3535
{
@@ -109,7 +109,7 @@ namespace sb
109109

110110
const IEnvironment &getEnvironment() { return _engine->getEnvironment(); }
111111

112-
ILogger &getLogger() { return _engine->getLogger(); }
112+
Logger &getLogger() { return _engine->getLogger(); }
113113

114114
di::ServiceProvider &getServiceProvider() { return _engine->getServiceProvider(); }
115115

Include/Engine/WebApplicationBuilder.hpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717
#include "Common/ConfigurationManager.hpp"
1818
#include "Common/EnvVariables.hpp"
1919
#include "Common/Json.hpp"
20+
#include "Common/Logger.hpp"
2021
#include "Common/ServerSettings.hpp"
2122
#include "Common/Utils.hpp"
2223
#include "Engine/EnvironmentBuilder.hpp"
24+
#include "Engine/LoggingBuilder.hpp"
2325
#include "Engine/WebApplication.hpp"
2426
#include "Engine/WebApplicationOptions.hpp"
25-
#include "Log/ConsoleLogProvider.hpp"
26-
#include "Log/Logger.hpp"
27-
#include "Log/LoggingBuilder.hpp"
2827
#include "Router/Router.hpp"
2928
#include "Services/Environment.hpp"
3029
#include "Services/IEnvironment.hpp"
@@ -164,10 +163,9 @@ namespace sb
164163
_configuration->addEnvironmentVariables(options.environmentPrefix);
165164
_configuration->addCommandLine(options.argc, options.argv);
166165

167-
_loggingBuilder->add<ConsoleLogProvider>();
168-
_loggingBuilder->addSpdlog([]() {
166+
_loggingBuilder->add([]() -> LoggerSinkPtr {
169167
auto consoleSink = std::make_unique<spdlog::sinks::stdout_color_sink_mt>();
170-
consoleSink->set_level(spdlog::level::warn);
168+
consoleSink->set_level(LogLevel::trace);
171169
return consoleSink;
172170
});
173171
}
@@ -190,12 +188,12 @@ namespace sb
190188
});
191189

192190
_serviceCollection->add(_loggingBuilder->getServices());
193-
_serviceCollection->addSingleton([](std::vector<std::unique_ptr<spdlog::sinks::sink>> sinks) {
194-
auto map = [](auto &sink) -> std::shared_ptr<spdlog::sinks::sink> { return std::move(sink); };
191+
192+
_serviceCollection->addSingleton([](std::vector<LoggerSinkPtr> sinks) {
193+
auto map = [](auto &sink) -> std::shared_ptr<LoggerSink> { return std::move(sink); };
195194
auto view = sinks | std::views::transform(map);
196-
return spdlog::logger{"", view.begin(), view.end()};
195+
return Logger{"", view.begin(), view.end()};
197196
});
198-
_serviceCollection->addSingleton<ILogger, Logger>();
199197
}
200198
};
201199
}; // namespace sb

Include/Log/ConsoleLogProvider.hpp

Lines changed: 0 additions & 57 deletions
This file was deleted.

Include/Log/ILogProvider.hpp

Lines changed: 0 additions & 17 deletions
This file was deleted.

Include/Log/ILogger.hpp

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)