feat: add spdlog

This commit is contained in:
Roflmuffin
2023-10-07 17:10:05 +10:00
parent bdeff3f12c
commit 3cb2d0e112
8 changed files with 81 additions and 7 deletions

3
.gitmodules vendored
View File

@@ -5,3 +5,6 @@
[submodule "libraries/metamod-source"]
path = libraries/metamod-source
url = https://github.com/alliedmodders/metamod-source
[submodule "libraries/spdlog"]
path = libraries/spdlog
url = https://github.com/gabime/spdlog

View File

@@ -4,6 +4,8 @@ Project(counterstrikesharp C CXX)
include("makefiles/shared.cmake")
add_subdirectory(libraries/spdlog)
SET(SOURCE_FILES
src/sample_mm.cpp
src/sample_mm.h
@@ -21,6 +23,8 @@ SET(SOURCE_FILES
src/core/utils.h
src/core/globals.h
src/core/globals.cpp
src/core/log.h
src/core/log.cpp
)

1
libraries/spdlog Submodule

Submodule libraries/spdlog added at 91807c2e71

View File

@@ -26,4 +26,5 @@ SET(
${SOURCESDK_LIB}/linux64/tier1.a
${SOURCESDK_LIB}/linux64/interfaces.a
${SOURCESDK_LIB}/linux64/mathlib.a
spdlog
)

View File

@@ -3,6 +3,8 @@ Set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING
FORCE
)
Set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
Set(SOURCESDK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libraries/hl2sdk-cs2)
Set(METAMOD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libraries/metamod-source)
@@ -24,9 +26,8 @@ include_directories(
${SOURCESDK}/public/game/server
${METAMOD_DIR}/core
${METAMOD_DIR}/core/sourcehook
libraries/spdlog/include
libraries
)
SET(ASMJIT_STATIC 1)
Project(counterstrikesharp C CXX)

30
src/core/log.cpp Normal file
View File

@@ -0,0 +1,30 @@
#include "core/log.h"
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
namespace counterstrikesharp
{
std::shared_ptr<spdlog::logger> Log::m_core_logger;
void Log::Init()
{
std::vector<spdlog::sink_ptr> logSinks;
logSinks.emplace_back(std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>());
logSinks.emplace_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("counterstrikesharp.log", true));
logSinks[0]->set_pattern("%^[%T.%e] %n: %v%$");
logSinks[1]->set_pattern("[%T.%e] [%l] %n: %v");
m_core_logger = std::make_shared<spdlog::logger>("CSSharp", begin(logSinks), end(logSinks));
spdlog::register_logger(m_core_logger);
m_core_logger->set_level(spdlog::level::info);
m_core_logger->flush_on(spdlog::level::info);
}
void Log::Close()
{
spdlog::drop("CSSharp");
m_core_logger = nullptr;
}
} // namespace counterstrikesharp

31
src/core/log.h Normal file
View File

@@ -0,0 +1,31 @@
#pragma once
#include <memory>
#include <spdlog/fmt/ostr.h>
#include <spdlog/spdlog.h>
namespace counterstrikesharp
{
class Log
{
public:
static void Init();
static void Close();
static std::shared_ptr<spdlog::logger> &GetCoreLogger()
{
return m_core_logger;
}
private:
static std::shared_ptr<spdlog::logger> m_core_logger;
};
} // namespace counterstrikesharp
#define CSSHARP_CORE_TRACE(...) ::counterstrikesharp::Log::GetCoreLogger()->trace(__VA_ARGS__)
#define CSSHARP_CORE_DEBUG(...) _ ::counterstrikesharp::Log::GetCoreLogger()->debug(__VA_ARGS__)
#define CSSHARP_CORE_INFO(...) ::counterstrikesharp::Log::GetCoreLogger()->info(__VA_ARGS__)
#define CSSHARP_CORE_WARN(...) ::counterstrikesharp::Log::GetCoreLogger()->warn(__VA_ARGS__)
#define CSSHARP_CORE_ERROR(...) ::counterstrikesharp::Log::GetCoreLogger()->error(__VA_ARGS__)
#define CSSHARP_CORE_CRITICAL(...) ::counterstrikesharp::Log::GetCoreLogger()->critical(__VA_ARGS__)

View File

@@ -17,6 +17,7 @@
#include <cstdio>
#include "core/log.h"
#include "core/utils.h"
#include "iserver.h"
@@ -58,8 +59,8 @@ ConVar sample_cvar("sample_cvar", "42", 0);
CON_COMMAND_F(sample_command, "Sample command", FCVAR_NONE)
{
META_CONPRINTF("Sample command called by %d. Command: %s\n", context.GetPlayerSlot(),
utils::PluginDirectory().c_str());
CSSHARP_CORE_INFO("Sample command called by {0}. Command: {1}", context.GetPlayerSlot().Get(),
utils::PluginDirectory().c_str());
}
PLUGIN_EXPOSE(SamplePlugin, g_SamplePlugin);
@@ -67,7 +68,9 @@ bool SamplePlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen,
{
PLUGIN_SAVEVARS();
META_CONPRINTF("ISMM: %d", ismm);
Log::Init();
CSSHARP_CORE_INFO("Initializing");
GET_V_IFACE_CURRENT(GetEngineFactory, globals::engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
GET_V_IFACE_CURRENT(GetEngineFactory, globals::cvars, ICvar, CVAR_INTERFACE_VERSION);
@@ -77,7 +80,7 @@ bool SamplePlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen,
GET_V_IFACE_ANY(GetEngineFactory, globals::networkServerService, INetworkServerService,
NETWORKSERVERSERVICE_INTERFACE_VERSION);
META_CONPRINTF("Starting plugin.\n");
CSSHARP_CORE_INFO("Globals loaded.");
SH_ADD_HOOK_MEMFUNC(IServerGameDLL, GameFrame, globals::server, this, &SamplePlugin::Hook_GameFrame, true);
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientActive, globals::serverGameClients, this,
@@ -95,7 +98,7 @@ bool SamplePlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen,
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, globals::serverGameClients, this,
&SamplePlugin::Hook_ClientCommand, false);
META_CONPRINTF("All hooks started!\n");
CSSHARP_CORE_INFO("Hooks added.");
// Used by Metamod Console Commands
g_pCVar = globals::cvars;