Tags: #tags: vcl, varnish, logging
# log_it.vcl
sub log_it {
log {"syslog <service_id> <service_name> :: "} req.http.X-MutableThing;
}
# vcl_recv
import "log_it"
set req.http.X-MutableThing = "foo"
call log_it;
set req.http.X-MutableThing = "bar"
call log_it;
declare local var.stage_id STRING;
declare local var.prod_id STRING;
declare local var.common STRING;
declare local var.debug_logs_active BOOL;
declare local var.defaults STRING;
declare local var.debug STRING;
# DO NOT add a space in front of "syslog"
# " syslog ..." will break the logging
set var.stage_id = "123";
set var.prod_id = "456";
set var.common = " :: " req.http.Fastly-Client-IP " '-' '-' " now " " req.request " " req.url " ";
set var.debug_logs_active = false;
if (req.service_id == var.stage_id) {
set var.defaults = "syslog " var.stage_id " www-stage-fastly" var.common;
}
elsif (req.service_id == var.prod_id) {
set var.defaults = "syslog " var.prod_id " fastly-www" var.common;
}
else {
set var.defaults = ""; # no-op if an unidentified service
}
set var.debug = if (var.debug_logs_active, var.defaults, "");
declare local var.logs_active BOOL;
declare local var.defaults STRING;
# Note: DO NOT add a space in front of "syslog"
# e.g. " syslog ..." will break the logging
set var.logs_active = false;
set var.defaults = if (var.logs_active, "syslog <service_id> <endpoint> :: " req.http.Fastly-Client-IP " '-' '-' " now " " req.request " " req.url " ", "");
# some of the request variables used are specific to Fastly
# also the reference to <service_id> <endpoint> are specific to Fastly and Papertrail
# so your mileage may vary
sub vcl_recv {
#FASTLY recv
include "logging"
log var.defaults req.restarts " [main.vcl] X-FOO HEADER VALUE: " req.http.X-Foo;
}