#varnish #vcl
#varnish #vcl
Вопрос:
Я изучаю varnish и расширяю varnish vmod с помощью встроенного кода на C. И я начинаю с написания собственного пользовательского модуля varnish. Я хочу регистрировать ошибки и сбои в моем пользовательском модуле. Как мне этого добиться?
У меня есть варианты выбора из различных библиотек ведения журнала, доступных для C. Но я хочу проверить, есть ли какая-либо встроенная библиотека varnish, чтобы использовать ее. Ниже приведен мой пример кода файла 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,amp;error);
if (!jobj) {
// error log here
return JSON_ERROR;
}
return return_code;
}
Я хочу, чтобы строка журнала ошибок добавлялась в файл журнала cutom, когда условие if в приведенном выше коде выполняется. Пожалуйста, помогите.
Ответ №1:
Вы хотите VSLb
:
VSLb(ctx->vsl, SLT_VCL_Log, "%d", 5);
Если вам нужно создать строку большего размера или вам нужны выделения, используйте WS_*
функции, их выделения освобождаются в конце rquest автоматически.
Посмотрите, как std.log()
это происходит: https://github.com/varnishcache/varnish-cache/blob/389d7ba28e0d0e3a2d5c30a959aa517e5166b246/vmod/vmod_std.c#L145-L153