@version: 3.19
@include "scl.conf"
options {
  chain_hostnames(off);
  flush_lines(0);
  use_dns(no);
  use_fqdn(no);
  owner("root"); group("adm"); perm(0640);
  stats_freq(0);
  bad_hostname("^gconfd$");
};
source s_src {
  unix-stream("/dev/log");
  internal();
};
source s_sogo {
  pipe("/dev/sogo_log" owner(sogo) group(sogo));
};
destination d_stdout { pipe("/dev/stdout"); };
destination d_redis_ui_log {
  redis(
    host("`REDIS_SLAVEOF_IP`")
    persist-name("redis1")
    port(`REDIS_SLAVEOF_PORT`)
    command("LPUSH" "SOGO_LOG" "$(format-json time=\"$S_UNIXTIME\" priority=\"$PRIORITY\" program=\"$PROGRAM\" message=\"$MESSAGE\")\n")
  );
};
destination d_redis_f2b_channel {
  redis(
    host("`REDIS_SLAVEOF_IP`")
    persist-name("redis2")
    port(`REDIS_SLAVEOF_PORT`)
    command("PUBLISH" "F2B_CHANNEL" "$(sanitize $MESSAGE)")
  );
};
log {
  source(s_sogo);
  destination(d_redis_ui_log);
  destination(d_redis_f2b_channel);
};
log {
  source(s_sogo);
  source(s_src);
  destination(d_stdout);
};
