Hi there. The company I work for, SourceForge, wanted the ability to
have a custom timestamp in a log file, so I created a patch for this. I
have been authorized to release it back to the nginx community. See
what you think of my design and let me know if you have any ideas for
The patch implements the following:
For every named log format there may be defined a custom timestamp
that will be passed to strftime() for expansion. This string is
via $time_custom instead of $time_local. (It defaults to expanding to
empty string unless the user specifies a time_custom_format value for
named log format.) Inside the custom format one extra variable
is supported: the use of “$ms” will substitute a 3-digit milliseconds
value at that point.
log_format main '$remote_addr - $remote_user [$time_custom]
'$status $body_bytes_sent “$http_referer” ’
time_custom_format main '%d/%b/%Y:%H:%M:%S.$ms %z';
That defines a log format that is like $time_local except that it gets
millisecond logging resolution. Obviously, the string doesn’t need to
be quite so similar to the default, but you get the idea.
Here’s the patch:
The code caches the strftime() expansion so that all loggers using the
named log format cause strftime() to be called at most once per second.
Please let me know what you think.