我正在学习清漆,并打算使用内联C代码扩展清漆vmod。我首先编写自己的自定义清漆模块。我想从自定义模块记录错误和失败。我该如何实现?
我有从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;
}
当上面代码中的if条件为true时,我希望将一个错误日志行添加到一个cutom日志文件中。请帮忙。
答案 0 :(得分:0)
您要VSLb
:
VSLb(ctx->vsl, SLT_VCL_Log, "%d", 5);
如果您需要构建更大的字符串或需要分配,请使用WS_*
函数,它们的分配将在rquest的末尾自动释放。
查看std.log()
的工作方式:https://github.com/varnishcache/varnish-cache/blob/master/lib/libvmod_std/vmod_std.c#L143