Bash =~ regex и https://regex101.com/

#!/usr/bin/env python
import sys

for y in open(sys.argv[1]):
    y = int(y)
    x += 1
    while x < y:
       print x
       x += 1

-121--290335-

Примечание: Вместо кода PHP ниже, если вы хотите отследить все git commits (а не только те, которые зафиксированы с помощью PHP), должна быть возможность установить пост-commit hook с аналогичным выходом.


Сразу после написания вопроса я наткнулся на это действительно простое руководство . Исходя из этого, я сделал следующее:

Создайте каталог журнала и установите разрешения

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

sudo mkdir /var/log/gitweb
sudo chown: www-data /var/log/gitweb

Функция PHP git регистрации

Эта строка кода выполняется каждый раз, когда я запускаю git commit в коде php. Новые строки заменяются пользовательской последовательностью, так что каждая фиксация находится в собственной строке (насколько мне известно, Logwatch может работать только построчно). При анализе с помощью Logwatch он будет заменен на новые строки.

shell_exec('(git log -1 --date=iso --name-status | awk 1 ORS="[NEWLINE_HERE]" ; echo) >> /var/log/gitweb/gitweb.log');

Группа файлов журнала Logwatch

# /etc/logwatch/conf/logfiles/gitweb.conf

LogFile = gitweb/*.log
Archive = gitweb/*.gz
*ExpandRepeats

Не совсем уверен, что делает * ExpandRepeats, но это было в руководстве, с которым я связался.

Служба Logwatch

# /etc/logwatch/conf/services/gitweb.conf

Title = "Git commits"
LogFile = gitweb

Анализатор Logwatch

Это делает две вещи:

  • Фильтрация по времени (она печатает только строки/фиксации с правильной датой)
  • Преобразовать последовательность custrom обратно в новые строки (см. PHP-код выше)

Я знаю абсолютно нулевое значение perl (я посмотрел другие сценарии Logwatch для справки), поэтому

use Logwatch ':dates';

my $filter = TimeFilter('%Y-%m-%d %H:%M:%S');

while (defined(my $ThisLine = )) {
   if ($ThisLine =~ /$filter/) {
      $ThisLine =~ s/\[NEWLINE_HERE\]/\n/g;
      print $ThisLine;
   }
}

exit(0);

Набор поворота журнала

# /etc/logrotate.d/gitweb

/var/log/gitweb/*log {

    daily

    # keep 10 old logs
    rotate 10

    # don't do anything if the log is missing
    missingok

    # don't do anything if the log is empty
    notifempty

    # zip the archived logs
    compress
}

-121--290276-

Если не требуется переместить почтовый магазин; просто восстановите конфигурацию до значений по умолчанию.

Эта настройка хранит сообщения электронной почты в /var/spool/mail/ вместо home , что означает, что любой устанавливаемый MUA будет знать, где его найти без какой-либо перенастройки.

10
02.02.2018, 17:24
0 ответов

Теги

Похожие вопросы