Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Валентин Бартенев
On Sunday, 26 July 2020 19:42:58 MSK Slawa Olhovchenkov wrote:
> On Sun, Jul 26, 2020 at 07:29:04PM +0300, Валентин Бартенев wrote:
> 
> > On Sunday, 26 July 2020 19:15:20 MSK Slawa Olhovchenkov wrote:
> > > On Sun, Jul 26, 2020 at 05:55:57PM +0300, Sergey Kandaurov wrote:
> > > 
> > > > 
> > > > > On 24 Jul 2020, at 14:13, Slawa Olhovchenkov  wrote:
> > > > > 
> > > > > Внезапно выяснилось что если пишем в json формате (ну ок,
> > > > > экранирование json), то отсутсвующе числовые значения все ломают.
> > > > > они идут как "-". может в этом случае их выводить как null?
> > > > 
> > > > Такая подстановка используется в эскейпинге по умолчанию,
> > > > если значение переменной не найдено.  В других форматах
> > > > эскейпинга значение не выводится, подробнее здесь:
> > > > http://nginx.org/r/log_format/ru
> > > 
> > > ну по спецификации json отстувиие должно кодироваться как null, не?
> > 
> > Это где такое написано? 
> 
> https://stackoverflow.com/questions/21120999/representing-null-in-json
> 

Это не спецификация, а предпочтения пользователей StackOverflow.


> в предположении что значение числовое.
> 
> в любом случае варианта выводить ничего нет -- для чисел будет не
> валидный json, а все числа пихать в виде строк в "" -- как-то тоже
> кажется неправильным.


Дело в том, что в nginx все переменные строковые.  Они в первую очередь
предназначены для использования в конфигурации, а там нет отличий никаких
между числом и строкой.  Конфигурация - это не ЯП с типизацией, а набор
токенов из текстового файла, которые затем интерпретируются в зависимости
от директивы, в которой используются.

Поэтому решение о том, как использовать каждую переменную в JSON: в виде
строки, заворачивая в кавычки, или в виде числа, не заворачивая - отдано
на откуп пользователю.  Если пользователь решает использовать переменную
не в виде строки, то он должен позаботиться о том, чтобы она всегда
содержала в этом случае корректное значение с точки зрения выбранного
им варианта применения.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Slawa Olhovchenkov
On Sun, Jul 26, 2020 at 10:07:23PM +0500, Илья Шипицин wrote:

> вс, 26 июл. 2020 г. в 22:05, Slawa Olhovchenkov :
> 
> > On Sun, Jul 26, 2020 at 09:52:35PM +0500, Илья Шипицин wrote:
> >
> > > > https://stackoverflow.com/questions/21120999/representing-null-in-json
> > > >
> > > > в предположении что значение числовое.
> > > >
> > >
> > > а как правильно ескейпить "0.001, - , 0.002"
> >
> 
> первый бекенд вернул 503
> второй сбросил tcp
> третий вернул 200

а, ок.
ну в общем я вариант сказал.

а может даже так [0.001,null,0.002]

> и у меня proxy_next_upstream http_503
> 
> 
> >
> > да, хороший вопрос
> > только почему у нас два ответа?
> >
> > но я думаю что если одно число -- то как число
> > если ничего -- не было обращений к апстирму -- null
> > иначе строка в кавычках.
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru

> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Илья Шипицин
вс, 26 июл. 2020 г. в 22:05, Slawa Olhovchenkov :

> On Sun, Jul 26, 2020 at 09:52:35PM +0500, Илья Шипицин wrote:
>
> > > https://stackoverflow.com/questions/21120999/representing-null-in-json
> > >
> > > в предположении что значение числовое.
> > >
> >
> > а как правильно ескейпить "0.001, - , 0.002"
>

первый бекенд вернул 503
второй сбросил tcp
третий вернул 200

и у меня proxy_next_upstream http_503


>
> да, хороший вопрос
> только почему у нас два ответа?
>
> но я думаю что если одно число -- то как число
> если ничего -- не было обращений к апстирму -- null
> иначе строка в кавычках.
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Slawa Olhovchenkov
On Sun, Jul 26, 2020 at 09:52:35PM +0500, Илья Шипицин wrote:

> > https://stackoverflow.com/questions/21120999/representing-null-in-json
> >
> > в предположении что значение числовое.
> >
> 
> а как правильно ескейпить "0.001, - , 0.002"

да, хороший вопрос
только почему у нас два ответа?

но я думаю что если одно число -- то как число
если ничего -- не было обращений к апстирму -- null
иначе строка в кавычках.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Илья Шипицин
вс, 26 июл. 2020 г. в 21:43, Slawa Olhovchenkov :

> On Sun, Jul 26, 2020 at 07:29:04PM +0300, Валентин Бартенев wrote:
>
> > On Sunday, 26 July 2020 19:15:20 MSK Slawa Olhovchenkov wrote:
> > > On Sun, Jul 26, 2020 at 05:55:57PM +0300, Sergey Kandaurov wrote:
> > >
> > > >
> > > > > On 24 Jul 2020, at 14:13, Slawa Olhovchenkov 
> wrote:
> > > > >
> > > > > Внезапно выяснилось что если пишем в json формате (ну ок,
> > > > > экранирование json), то отсутсвующе числовые значения все ломают.
> > > > > они идут как "-". может в этом случае их выводить как null?
> > > >
> > > > Такая подстановка используется в эскейпинге по умолчанию,
> > > > если значение переменной не найдено.  В других форматах
> > > > эскейпинга значение не выводится, подробнее здесь:
> > > > http://nginx.org/r/log_format/ru
> > >
> > > ну по спецификации json отстувиие должно кодироваться как null, не?
> >
> > Это где такое написано?
>
> https://stackoverflow.com/questions/21120999/representing-null-in-json
>
> в предположении что значение числовое.
>

а как правильно ескейпить "0.001, - , 0.002"


>
> в любом случае варианта выводить ничего нет -- для чисел будет не
> валидный json, а все числа пихать в виде строк в "" -- как-то тоже
> кажется неправильным.
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Slawa Olhovchenkov
On Sun, Jul 26, 2020 at 07:29:04PM +0300, Валентин Бартенев wrote:

> On Sunday, 26 July 2020 19:15:20 MSK Slawa Olhovchenkov wrote:
> > On Sun, Jul 26, 2020 at 05:55:57PM +0300, Sergey Kandaurov wrote:
> > 
> > > 
> > > > On 24 Jul 2020, at 14:13, Slawa Olhovchenkov  wrote:
> > > > 
> > > > Внезапно выяснилось что если пишем в json формате (ну ок,
> > > > экранирование json), то отсутсвующе числовые значения все ломают.
> > > > они идут как "-". может в этом случае их выводить как null?
> > > 
> > > Такая подстановка используется в эскейпинге по умолчанию,
> > > если значение переменной не найдено.  В других форматах
> > > эскейпинга значение не выводится, подробнее здесь:
> > > http://nginx.org/r/log_format/ru
> > 
> > ну по спецификации json отстувиие должно кодироваться как null, не?
> 
> Это где такое написано? 

https://stackoverflow.com/questions/21120999/representing-null-in-json

в предположении что значение числовое.

в любом случае варианта выводить ничего нет -- для чисел будет не
валидный json, а все числа пихать в виде строк в "" -- как-то тоже
кажется неправильным.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Валентин Бартенев
On Sunday, 26 July 2020 19:15:20 MSK Slawa Olhovchenkov wrote:
> On Sun, Jul 26, 2020 at 05:55:57PM +0300, Sergey Kandaurov wrote:
> 
> > 
> > > On 24 Jul 2020, at 14:13, Slawa Olhovchenkov  wrote:
> > > 
> > > Внезапно выяснилось что если пишем в json формате (ну ок,
> > > экранирование json), то отсутсвующе числовые значения все ломают.
> > > они идут как "-". может в этом случае их выводить как null?
> > 
> > Такая подстановка используется в эскейпинге по умолчанию,
> > если значение переменной не найдено.  В других форматах
> > эскейпинга значение не выводится, подробнее здесь:
> > http://nginx.org/r/log_format/ru
> 
> ну по спецификации json отстувиие должно кодироваться как null, не?

Это где такое написано? 

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Slawa Olhovchenkov
On Sun, Jul 26, 2020 at 05:55:57PM +0300, Sergey Kandaurov wrote:

> 
> > On 24 Jul 2020, at 14:13, Slawa Olhovchenkov  wrote:
> > 
> > Внезапно выяснилось что если пишем в json формате (ну ок,
> > экранирование json), то отсутсвующе числовые значения все ломают.
> > они идут как "-". может в этом случае их выводить как null?
> 
> Такая подстановка используется в эскейпинге по умолчанию,
> если значение переменной не найдено.  В других форматах
> эскейпинга значение не выводится, подробнее здесь:
> http://nginx.org/r/log_format/ru

ну по спецификации json отстувиие должно кодироваться как null, не?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-26 Пенетрантность Sergey Kandaurov

> On 24 Jul 2020, at 14:13, Slawa Olhovchenkov  wrote:
> 
> Внезапно выяснилось что если пишем в json формате (ну ок,
> экранирование json), то отсутсвующе числовые значения все ломают.
> они идут как "-". может в этом случае их выводить как null?

Такая подстановка используется в эскейпинге по умолчанию,
если значение переменной не найдено.  В других форматах
эскейпинга значение не выводится, подробнее здесь:
http://nginx.org/r/log_format/ru

-- 
Sergey Kandaurov

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-24 Пенетрантность Илья Шипицин
пт, 24 июл. 2020 г. в 16:20, Slawa Olhovchenkov :

> On Fri, Jul 24, 2020 at 04:17:11PM +0500, Илья Шипицин wrote:
>
> > через map можете назначить свою переменную и логировать уже ее.
>
> ну вот для upstream_response_time так прокатит ли?
>

прокатит


> и не правильней ли все же при экранировании json это делать на уровне
> mod_log?
>

у этой переменной список возможных значений

float
-
-, float, float

это не "число" как вы его пытаетесь трактовать. вы можете его через map
редуцировать до нужного вам. с потерей информации (например, о том, что
запрос обслуживался несколькими бекендами)


>
> > а что за переменные ? просто, там есть, например, upstream_response_time,
> > он может быть числом (если ответил один бекенд), прочерком (если не
> ответил
> > ни один), и комбинацией чисел и прочерков через запятую (если несколько
> > бекендов зафейлили, а последний ответил)
>
> вообще да, именно он.
>
> > пт, 24 июл. 2020 г. в 16:14, Slawa Olhovchenkov :
> >
> > > Внезапно выяснилось что если пишем в json формате (ну ок,
> > > экранирование json), то отсутсвующе числовые значения все ломают.
> > > они идут как "-". может в этом случае их выводить как null?
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-24 Пенетрантность Slawa Olhovchenkov
On Fri, Jul 24, 2020 at 04:17:11PM +0500, Илья Шипицин wrote:

> через map можете назначить свою переменную и логировать уже ее.

ну вот для upstream_response_time так прокатит ли?
и не правильней ли все же при экранировании json это делать на уровне mod_log?

> а что за переменные ? просто, там есть, например, upstream_response_time,
> он может быть числом (если ответил один бекенд), прочерком (если не ответил
> ни один), и комбинацией чисел и прочерков через запятую (если несколько
> бекендов зафейлили, а последний ответил)

вообще да, именно он.

> пт, 24 июл. 2020 г. в 16:14, Slawa Olhovchenkov :
> 
> > Внезапно выяснилось что если пишем в json формате (ну ок,
> > экранирование json), то отсутсвующе числовые значения все ломают.
> > они идут как "-". может в этом случае их выводить как null?
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru

> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: json log и "экранирование" неопределенных переменных

2020-07-24 Пенетрантность Илья Шипицин
через map можете назначить свою переменную и логировать уже ее.

а что за переменные ? просто, там есть, например, upstream_response_time,
он может быть числом (если ответил один бекенд), прочерком (если не ответил
ни один), и комбинацией чисел и прочерков через запятую (если несколько
бекендов зафейлили, а последний ответил)

пт, 24 июл. 2020 г. в 16:14, Slawa Olhovchenkov :

> Внезапно выяснилось что если пишем в json формате (ну ок,
> экранирование json), то отсутсвующе числовые значения все ломают.
> они идут как "-". может в этом случае их выводить как null?
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

json log и "экранирование" неопределенных переменных

2020-07-24 Пенетрантность Slawa Olhovchenkov
Внезапно выяснилось что если пишем в json формате (ну ок,
экранирование json), то отсутсвующе числовые значения все ломают.
они идут как "-". может в этом случае их выводить как null?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru