Skip to content

Commit fcf889d

Browse files
committed
Change log level on runtime (LogLevel)
1 parent 39109a3 commit fcf889d

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

include/a_spdlog.inc.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ native LogFlushOn(const name[], SPDLOG_LEVEL:level);
176176
*/
177177
native LogFlush(const name[]);
178178

179+
/**
180+
* LogLevel
181+
* @param string name
182+
* @param SPDLOG_LEVEL:level
183+
*/
184+
native LogLevel(const name[], SPDLOG_LEVEL:level);
179185

180186
/**
181187
* DropAllLogger

src/Natives.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,66 @@ AMX_NATIVE(LogFlush, 1)
437437
return logger ? 1 : 0;
438438
AMX_NATIVE_END
439439

440+
/**
441+
* native LogLevel(const name[], int size)
442+
* TODO: <Refactor>
443+
*/
444+
AMX_NATIVE(LogLevel, 2)
445+
// Get params
446+
auto name = Logger::getString(amx, params[1]);
447+
448+
/**
449+
* trace = 0,
450+
* debug = 1,
451+
* info = 2,
452+
* warn = 3,
453+
* err = 4,
454+
* critical = 5,
455+
* off = 6
456+
*/
457+
458+
// Default
459+
auto level = spdlog::level::trace;
460+
461+
// Addr
462+
cell *pAddr = nullptr;
463+
amx_GetAddr(amx, params[2], &pAddr);
464+
465+
// Get number from ptr
466+
auto number = static_cast<int>(*pAddr);
467+
468+
// Translate log level
469+
switch (number) {
470+
case spdlog::level::trace:
471+
level = spdlog::level::trace;
472+
break;
473+
case spdlog::level::debug:
474+
level = spdlog::level::debug;
475+
break;
476+
case spdlog::level::info:
477+
level = spdlog::level::info;
478+
break;
479+
case spdlog::level::warn:
480+
level = spdlog::level::warn;
481+
break;
482+
case spdlog::level::err:
483+
level = spdlog::level::err;
484+
break;
485+
case spdlog::level::critical:
486+
level = spdlog::level::critical;
487+
break;
488+
case spdlog::level::off:
489+
level = spdlog::level::off;
490+
break;
491+
}
492+
493+
// Get logger and write
494+
auto logger = spdlog::get(name);
495+
if (logger)
496+
logger->set_level(level);
497+
498+
return logger ? 1 : 0;
499+
AMX_NATIVE_END
440500

441501
/**
442502
* native LoggerVersion(const version[])

src/Natives.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ SAMPLOG_BEGIN_NS
4545
AMX_DECLARE_NATIVE(LogError);
4646
AMX_DECLARE_NATIVE(LogFlushOn);
4747
AMX_DECLARE_NATIVE(LogFlush);
48+
AMX_DECLARE_NATIVE(LogLevel);
4849

4950
AMX_DECLARE_NATIVE(DropAllLogger);
5051
AMX_DECLARE_NATIVE(EnableErrorLogger);

0 commit comments

Comments
 (0)