У нас есть Nginx в качестве обратного прокси перед Tomcat. Оба они регистрируют доступ с отметками времени ISO 8601, но tomcat добавляет миллисекунды (что является частью стандарта). Таким образом, если Nginx получает запрос и передает его Tomcat, журнал Nginx может иметь метку времени «2015-10-29T00: 37: 02 + 00: 00», а Tomcat будет иметь метку времени «2015-10-29T00: 37». : 02,106 + 0000 "для того же доступа. Меня не беспокоят незначительные различия в форматировании, но отсутствие миллисекунд (часть ", 106" в журнале Tomcat) является проблемой, потому что это мешает нам правильно сопоставить журналы.
Есть ли способ заставить Nginx включать миллисекунды в свои журналы?
К сожалению, если судить по чтению исходного кода в nginx, кажется, что нет простого способа сделать это. Вам нужно будет выполнить пост-обработку журналов (вы можете взять вывод $ msec и самостоятельно преобразовать его в ISO8601 с помощью ms) или исправить nginx, чтобы добавить это.
Интересно, что много лет назад был предложен патч, который дал бы достаточно гибкости, чтобы сделать это возможным, но я не думаю, что он куда-то пошел: http://nginx.2469901.n2.nabble.com/PATCH-time-custom-supports-a-custom-log-timestamp-td3505292.html#none