Hi Willy,

thanks for your answer, it works perfectly, thanks!

Jose

On Sun, Aug 9, 2015 at 4:55 AM, Willy Tarreau <w...@1wt.eu> wrote:

> Hi Jose,
>
> On Fri, Aug 07, 2015 at 01:28:13PM -0400, Jose Nunez wrote:
> > Hi,
> >
> > I need to express something similar to this:
> >
> >     http-request set-header X-REQUEST-START  t=%[Ts]%[ms]000
> >
> > (to append three "0"s at the end of the timestamp with milliseconds).
> >
> > I have tried with other ways to append the three "0"s at the end:
> >
> >     http-request set-header X-REQUEST-START  t=%Ts%[ms]\x30\x30\x30
> >
> > and
> >
> >     http-request set-header X-REQUEST-START  t=%Ts%ms\x30\x30\x30
> >
> > and no avail either.
>
> You've met the limits of the log format which is not a language and
> which requires some delimiters to be detected. Unfortunately it doesn't
> have any delimiter which doesn't appear in the output. I found a way to
> abuse it using %[] to mark a new word (since %[] detects the end of the
> current block using the closing bracket). Using just "%[]" emits a warning
> and does exactly what you want. A cleaner method in 1.6 consists in
> emitting
> an empty string as a delimitor : %[str()]. In 1.5, there is no str(), but
> you can use %[env()] which will retrieve the contents of the environment
> variable with no name, it doesn't exist so it returns an empty string. Yes
> I know that's ugly, but the log format has gone far beyond its design goals
> already!
>
> Thus it will give you this in 1.5 :
>
>      http-request set-header X-REQUEST-START  t=%Ts%ms%[env()]000
>
> In 1.6 you can also do that :
>
>      http-request set-header X-REQUEST-START  t=%Ts%ms%[str(000)]
>
> Also, please note that what you're doing above only works because %ms is
> left-padded with zeroes. I'm not seeing this documented anywhere though.
>
> Willy
>
>

Reply via email to