Welcome! Log In Create A New Profile

Advanced

Re: [PATCH] Variable $time_short.

Gena Makhomed
May 30, 2021 06:04AM
On 29.05.2021 0:55, Maxim Dounin wrote:

>> Main purpose of variable $time_short is usage for logging, access.log.
>>
>> Existing variables $time_iso8601 and $time_local has bad readability,
>> because these variables contains timezone after seconds and it has
>> no space between date and time fields.
>>
>> Compare readability:
>>
>> 27/May/2021:21:19:12 +0300
>> 27/May/2021:21:19:18 +0300
>> 27/May/2021:21:19:25 +0300
>> 27/May/2021:21:19:32 +0300
>> 27/May/2021:21:19:43 +0300
>>
>> 2021-05-27T21:19:12+03:00
>> 2021-05-27T21:19:18+03:00
>> 2021-05-27T21:19:25+03:00
>> 2021-05-27T21:19:32+03:00
>> 2021-05-27T21:19:43+03:00
>>
>> 2021/05/27 21:19:12
>> 2021/05/27 21:19:18
>> 2021/05/27 21:19:25
>> 2021/05/27 21:19:32
>> 2021/05/27 21:19:43
>>
>> But only proposed variable $time_short has excellent readability,
>> also this variable is very short, and contains no visual garbage.
>
> Well, if you want to improve readability and don't need a timezone
> in your logs, something like this might work instead:
>
> map $time_iso8601 $time {
> "~([0-9-]+)T([0-9:]+)" "$1 $2";
> volatile;
> }
>
> I don't think that introducing additional builtin variables for
> additional data/time formats is a good idea.

Using map directive for creating $time variable indeed allow us
improve readability of log files, but this method is not cheap,
- regular expressions runs for every record in access.log file.

On busy servers (under DDoS attacks) can be hundreds of records
per second and this regexp in map directive will just eat CPU.

Human-readable variable $time / $time_short intended to use on
busy servers, under DDoS-attacks, with Load Average 60 and more.
See https://github.com/makhomed/autofilter for details about this.

> I don't think that introducing additional builtin variables for
> additional data/time formats is a good idea.

Why not?

Builtin variable ngx_cached_err_log_time already exists in nginx,
patch for ngx_http_log_module is very small, just few lines of code:

+ { ngx_string("time_short"), sizeof("1970/09/28 12:00:00") - 1,
+ ngx_http_log_time_short },

+static u_char *
+ngx_http_log_time_short(ngx_http_request_t *r, u_char *buf,
ngx_http_log_op_t *op)
+{
+ return ngx_cpymem(buf, ngx_cached_err_log_time.data,
+ ngx_cached_err_log_time.len);
+}

--
Best regards,
Gena
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH] Variable $time_short.

Gena Makhomed 383 May 26, 2021 04:44PM

Re: [PATCH] Variable $time_short.

Maxim Dounin 109 May 27, 2021 01:26PM

Re: [PATCH] Variable $time_short.

Gena Makhomed 84 May 27, 2021 02:50PM

Re: [PATCH] Variable $time_short.

Maxim Dounin 96 May 28, 2021 05:56PM

Re: [PATCH] Variable $time_short.

Gena Makhomed 91 May 30, 2021 06:04AM

Re: [PATCH] Variable $time_short.

Maxim Dounin 137 May 31, 2021 12:08PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 310
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready