Как мне регистрировать ошибки при написании пользовательского модуля лака? - PullRequest
0 голосов
/ 19 апреля 2019

Я изучаю лак и о расширении лака vmod с помощью встроенного кода c.И я начинаю это с написания моего собственного модуля лака.Я хочу регистрировать ошибки и сбои из моего пользовательского модуля.Как мне этого добиться?

У меня есть варианты на выбор из различных библиотек журналов, доступных для C. Но я хочу проверить, есть ли какая-либо встроенная библиотека лаков, чтобы использовать ее.Ниже приведен мой пример кода файла vmod c.

#include "vrt.h"
#include "cache/cache.h"
#include "vcc_if.h"
#include <jansson.h>

#define JSON_ERROR "-1"
#define JSON_LOC "/etc/example.json"


VCL_STRING
vmod_validate_mymod(VRT_CTX) {
     (void) ctx;
     char *return_code = "0";
     json_t *jobj;
     json_error_t error;
     jobj = json_load_file(JSON_LOC,0,&error);
     if (!jobj) {
          // error log here
          return JSON_ERROR;
     }
     return return_code;
}

Я хочу добавить строку журнала ошибок в файл журнала cutom, если условие if в приведенном выше коде выполняется.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 мая 2019

Вы хотите VSLb:

VSLb(ctx->vsl, SLT_VCL_Log, "%d", 5);

Если вам нужно построить большую строку или вам нужны выделения, используйте функции WS_*, их выделения освобождаются в конце запроса автоматически.

Посмотрите, как std.log() делает это: https://github.com/varnishcache/varnish-cache/blob/master/lib/libvmod_std/vmod_std.c#L143

...