Рейтинг:0

Можно ли заполнять столбцы в журналах доступа/ошибок nginx?

флаг ml

Я недавно включил ipv6 на своем сайте, и хотя мне не часто приходится вручную просматривать файл access_log, в случае, когда я это делаю, теперь очень неприятно, что мой первый (IP) столбец иногда имеет длину 7 символов. а иногда и 39 символов.

Есть ли способ заполнить первый столбец всегда (скажем) шириной 39 символов?

Я гуглил и просматривал документы nginx, и я ничего не нашел, но подумал, что кто-то здесь может знать трюк...

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

Рейтинг:0
флаг ml

ОК, с момента написания я придумал свое лучшее (только для чтения) решение:

map $remote_addr $padded_ip { "~^(.{39})" "$1";
                              "~^(.{38})" "$1 ";
                              "~^(.{37})" "$1 ";
                              "~^(.{36})" "$1 ";
                              "~^(.{35})" "$1 ";
                              "~^(.{34})" "$1 ";
                              "~^(.{33})" "$1 ";
                              "~^(.{32})" "$1 ";
                              "~^(.{31})" "$1 ";
                              "~^(.{30})" "$1 ";
                              "~^(.{29})" "$1 ";
                              "~^(.{28})" "$1 ";
                              "~^(.{27})" "$1 ";
                              "~^(.{26})" "$1 ";
                              "~^(.{25})" "$1 ";
                              "~^(.{24})" "$1 ";
                              "~^(.{23})" "$1 ";
                              "~^(.{22})" "$1 ";
                              "~^(.{21})" "$1 ";
                              "~^(.{20})" "$1 ";
                              "~^(.{19})" "$1 ";
                              "~^(.{18})" "$1 ";
                              "~^(.{17})" "$1 ";
                              "~^(.{16})" "$1 ";
                              "~^(.{15})" "$1 ";
                              "~^(.{14})" "$1 ";
                              "~^(.{13})" "$1 ";
                              "~^(.{12})" "$1 ";
                              "~^(.{11})" "$1 ";
                              "~^(.{10})" "$1 ";
                              "~^(.{9})" "$1 ";
                              "~^(.{8})" "$1 ";
                              "~^(.{7})" "$1 "; }

Разве это не красиво?

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

Sergey Serov avatar
флаг de
Интересно! Но такая огромная конструкция обычно является флагом, что этот путь неправильный. Полагаю, будет лучше написать bash-скрипт (или любой удобный язык), который будет парсить лог так, как Вы хотите.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.