Commit 715794b8 authored by Yossi Gottlieb's avatar Yossi Gottlieb Committed by antirez
Browse files

Add RedisModule_Log() logging API function.

parent b5072897
...@@ -2768,6 +2768,30 @@ void RM_EmitAOF(RedisModuleIO *io, const char *cmdname, const char *fmt, ...) { ...@@ -2768,6 +2768,30 @@ void RM_EmitAOF(RedisModuleIO *io, const char *cmdname, const char *fmt, ...) {
return; return;
} }
/* --------------------------------------------------------------------------
* Logging
* -------------------------------------------------------------------------- */
/* Produces a log message to the standard Redis log. */
void RM_Log(RedisModuleCtx *ctx, int level, const char *fmt, ...)
{
va_list ap;
char msg[LOG_MAX_LEN];
size_t name_len;
if ((level&0xff) < server.verbosity) return;
if (!ctx->module) return; /* Can only log if module is initialized */
name_len = snprintf(msg, sizeof(msg),"%s: ", ctx->module->name);
va_start(ap, fmt);
vsnprintf(msg + name_len, sizeof(msg) - name_len, fmt, ap);
va_end(ap);
serverLogRaw(level,msg);
}
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
* Modules API internals * Modules API internals
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
...@@ -2886,6 +2910,7 @@ void moduleRegisterCoreAPI(void) { ...@@ -2886,6 +2910,7 @@ void moduleRegisterCoreAPI(void) {
REGISTER_API(SaveDouble); REGISTER_API(SaveDouble);
REGISTER_API(LoadDouble); REGISTER_API(LoadDouble);
REGISTER_API(EmitAOF); REGISTER_API(EmitAOF);
REGISTER_API(Log);
} }
/* Global initialization at Redis startup. */ /* Global initialization at Redis startup. */
......
...@@ -1115,3 +1115,11 @@ by a module. The command works exactly like `RedisModule_Call()` in the way ...@@ -1115,3 +1115,11 @@ by a module. The command works exactly like `RedisModule_Call()` in the way
the parameters are passed, but it does not return anything as the error the parameters are passed, but it does not return anything as the error
handling is performed by Redis itself. handling is performed by Redis itself.
## `RM_Log`
void RM_Log(RedisModuleCtx *ctx, int level, const char *fmt, ...);
Produce a log message into the standard Redis log. All standard Redis logging
configuration applies here. Messages can only be logged after a module has
initialized, and are prefixed by the name of the module. Log level is
specified using the REDISMODULE_LOG_* macros.
...@@ -68,6 +68,13 @@ ...@@ -68,6 +68,13 @@
#define REDISMODULE_POSITIVE_INFINITE (1.0/0.0) #define REDISMODULE_POSITIVE_INFINITE (1.0/0.0)
#define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0) #define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0)
/* Logging levels */
#define REDISMODULE_LOG_DEBUG 0
#define REDISMODULE_LOG_VERBOSE 1
#define REDISMODULE_LOG_NOTICE 2
#define REDISMODULE_LOG_WARNING 3
/* ------------------------- End of common defines ------------------------ */ /* ------------------------- End of common defines ------------------------ */
#ifndef REDISMODULE_CORE #ifndef REDISMODULE_CORE
...@@ -180,6 +187,7 @@ RedisModuleString *REDISMODULE_API_FUNC(RedisModule_LoadString)(RedisModuleIO *i ...@@ -180,6 +187,7 @@ RedisModuleString *REDISMODULE_API_FUNC(RedisModule_LoadString)(RedisModuleIO *i
char *REDISMODULE_API_FUNC(RedisModule_LoadStringBuffer)(RedisModuleIO *io, size_t *lenptr); char *REDISMODULE_API_FUNC(RedisModule_LoadStringBuffer)(RedisModuleIO *io, size_t *lenptr);
void REDISMODULE_API_FUNC(RedisModule_SaveDouble)(RedisModuleIO *io, double value); void REDISMODULE_API_FUNC(RedisModule_SaveDouble)(RedisModuleIO *io, double value);
double REDISMODULE_API_FUNC(RedisModule_LoadDouble)(RedisModuleIO *io); double REDISMODULE_API_FUNC(RedisModule_LoadDouble)(RedisModuleIO *io);
void REDISMODULE_API_FUNC(RedisModule_Log)(RedisModuleCtx *ctx, int level, const char *fmt, ...);
/* This is included inline inside each Redis module. */ /* This is included inline inside each Redis module. */
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused)); static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused));
...@@ -270,6 +278,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int ...@@ -270,6 +278,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API(SaveDouble); REDISMODULE_GET_API(SaveDouble);
REDISMODULE_GET_API(LoadDouble); REDISMODULE_GET_API(LoadDouble);
REDISMODULE_GET_API(EmitAOF); REDISMODULE_GET_API(EmitAOF);
REDISMODULE_GET_API(Log);
RedisModule_SetModuleAttribs(ctx,name,ver,apiver); RedisModule_SetModuleAttribs(ctx,name,ver,apiver);
return REDISMODULE_OK; return REDISMODULE_OK;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment