leer formato estructura ejemplos ejemplo json logging nginx

formato - ¿Cómo generar un registro JSON desde nginx?



json javascript (3)

Finalmente, parece que tenemos una buena forma de hacerlo con vanilla nginx sin ningún módulo. Solo defina:

log_format json_combined escape=json ''{'' ''"time_local":"$time_local",'' ''"remote_addr":"$remote_addr",'' ''"remote_user":"$remote_user",'' ''"request":"$request",'' ''"status": "$status",'' ''"body_bytes_sent":"$body_bytes_sent",'' ''"request_time":"$request_time",'' ''"http_referrer":"$http_referer",'' ''"http_user_agent":"$http_user_agent"'' ''}'';

Tenga en cuenta que escape = json se agregó en nginx 1.11.8. http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format

Intento generar un registro JSON desde nginx.

Conozco soluciones como esta, pero algunos de los campos que deseo registrar incluyen entradas generadas por el usuario (como encabezados HTTP) que deben ser escapadas correctamente.

Soy consciente de las entradas de registro de nginx desde octubre de 2011 y mayo de 2008 que dicen:

*) Change: now the 0x7F-0x1F characters are escaped as /xXX in an access_log. *) Change: now the 0x00-0x1F, ''"'' and ''/' characters are escaped as /xXX in an access_log.

pero esto todavía no ayuda, ya que /xXX no es válido en una cadena JSON .

También he examinado el módulo HttpSetMiscModule que tiene una directiva set_quote_json_str , pero parece que agrega /x22 a las cadenas, lo que no ayuda.

¿Alguna idea de otras soluciones para iniciar sesión en formato JSON desde nginx?



Puedes intentar usar:

PD: el parámetro if (1.7.0) habilita el registro condicional . Una solicitud no se registrará si la condición se evalúa como "0" o una cadena vacía:

map $status $http_referer{ ~/xXX 0; default 1; } access_log /path/to/access.log combined if=$http_referer;

Es una buena idea utilizar una herramienta como https://github.com/zaach/jsonlint para verificar sus datos JSON. Puede probar el resultado de su nuevo formato de registro y asegurarse de que sea JSON real y correcto.