On Thu, 13 Mar 2014 10:48:01 -0400
Julien Vehent <jul...@linuxwall.info> wrote:

> Hi everyone,
> 
> This seem to be a bug that I just ran into: when %ID is used in a 
> log-format, but unique-id-format is not defined, then everything after 
> %ID gets truncated from the logs.
> 
> Example:
> 
> == normal behavior
> 
>      haproxy.cfg:
>          log-format %{+Q}r\ %ID\ "%B\ bytes"
>          unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
> 
>      log:
>          Mar 13 14:42:18 localhost haproxy[19447]: "GET 
> /v1/somethingsomething HTTP/1.1" 
> 47B4176E:A19C_0A977AE4:01BB_5321C3C9_000A:4BF7 "805 bytes"
> 
> == broken behavior
> 
>      haproxy.cfg:
>          log-format %{+Q}r\ %ID\ "%B\ bytes"
>          # unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid  <= 
> commented out
> 
>      log:
>          Mar 13 14:45:46 localhost haproxy[19879]: "GET 
> /v1/somethingsomething HTTP/1.1"
> 
> The log line above stops after the request, and doesn't log the 
> bytes_read %B.
> 
> I may have missed something in the doc, but I haven't seen it mentioned 
> anywhere.


Thanks for the bug repport. Can you try the attached patch. It seems to
resolve your problem.

Thanks
Thierry


> -- 
> Julien Vehent
> http://jve.linuxwall.info
> 
diff --git a/src/log.c b/src/log.c
index 176a725..efb3d27 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1559,8 +1559,7 @@ int build_logline(struct session *s, char *dst, size_t maxsize, struct list *lis
 			case LOG_FMT_UNIQUEID: // %ID
 				ret = NULL;
 				src = s->unique_id;
-				if (src)
-					ret = lf_text(tmplog, src, maxsize - (tmplog - dst), tmp);
+				ret = lf_text(tmplog, src, maxsize - (tmplog - dst), tmp);
 				if (ret == NULL)
 					goto out;
 				tmplog = ret;

Reply via email to