# http://blog.exceliance.fr/2013/04/02/configure-syslog-ng-to-log-readable-http-url-from-haproxy/ # log full HTTP URL source s_loopback { syslog(ip(127.0.0.1) port(514) transport("udp")); }; destination d_haproxy_full { file("/var/log/haproxy.$YEAR-$MONTH-$DAY.log" template("$DATE $FULLHOST $PROGRAM: ${HAPROXY.CLIENT_IPPORT} \[${HAPROXY.DATE}\] ${HAPROXY.FRONTEND} ${HAPROXY.BACKEND} ${HAPROXY.TIME} ${HAPROXY.STATUS_CODE} ${HAPROXY.BYTES_READ} ${HAPROXY.COOKIE_REQ} ${HAPROXY.COOKIE_RESP} ${HAPROXY.TERM_STATE} ${HAPROXY.RUN_STATE} ${HAPROXY.QUEUE_STATE} \{${HAPROXY.HEADERS_REQ}\} \"${HAPROXY.METHOD} ${HAPROXY.FRONTEND_PROTOCOL}://${HAPROXY.HOST}${HAPROXY.URL} ${HAPROXY.HTTP_VERSION}\"\n") group(adm) perm(0640) dir_perm(0750) template_escape(no) ); }; filter f_haproxy { program("haproxy"); }; filter f_frontend_ssl { match("~ "); }; rewrite r_set_frontend_protocol { set("http", value("HAPROXY.FRONTEND_PROTOCOL") condition(filter(f_haproxy))); set("https", value("HAPROXY.FRONTEND_PROTOCOL") condition(filter(f_frontend_ssl))); }; parser p_haproxy { csv-parser(columns("HAPROXY.CLIENT_IPPORT", "HAPROXY.DATE", "HAPROXY.FRONTEND", "HAPROXY.BACKEND", "HAPROXY.TIME", "HAPROXY.STATUS_CODE", "HAPROXY.BYTES_READ", "HAPROXY.COOKIE_REQ", "HAPROXY.COOKIE_RESP", "HAPROXY.TERM_STATE", "HAPROXY.RUN_STATE", "HAPROXY.QUEUE_STATE", "HAPROXY.HEADERS_REQ", "HAPROXY.REQUEST") flags(escape-double-char,strip-whitespace) delimiters(" ") quote-pairs('""[]{}')); }; parser p_haproxy_request { csv-parser(columns("HAPROXY.METHOD", "HAPROXY.URL", "HAPROXY.HTTP_VERSION") delimiters(" ") flags(escape-none) template("${HAPROXY.REQUEST}")); }; parser p_haproxy_headers_req { csv-parser(columns("HAPROXY.HOST", "HAPROXY.USER_AGENT") delimiters("|") flags(escape-none) template("${HAPROXY.HEADERS_REQ}")); }; log { source(s_loopback); filter(f_haproxy); parser(p_haproxy); parser(p_haproxy_request); parser(p_haproxy_headers_req); rewrite(r_set_frontend_protocol); destination(d_haproxy_full); };