Где хранятся журналы git-daemon? (Git на окнах, используя Cygwin)

Я использую git-daemon в качестве службы Windows. (используя Create Process)
Команда, используемая в сервисе:

git daemon --reuseaddr --base-path=/data/test_work/ --export-all \
    --verbose --enable=receive-pack

Где я вижу логи git daemon?

Примечание: в /var/logs,

2 ответа

Где я могу увидеть логи git daemon?

Git 2.17 (Q1 2018) может помочь, так как журнал " git daemon "может быть перенаправлен с новой опцией; один из подходящих вариантов использования - отправка журнала со стандартной ошибкой (вместо syslog) при запуске из inetd,

Смотрите коммит 0c591ca (04 февраля 2018 г.) от Лукаса Веркмейстера ( lucaswerkmeister )
При поддержке: Ævar Arnfjörð Bjarmason ( avar ), Junio ​​C Hamano ( gitster ) и Эрик Саншайн ( sunshineco )
(Объединено Юнио С Хамано - gitster - в коммите c2bd43d, 21 февраля 2018 г.)

daemon: добавлять --log-destination=(stderr|syslog|none)

Эта новая опция может использоваться для переопределения неявного --syslog из --inetd или отключить все журналы. (В то время как --detach также подразумевает --syslog, --log-destination=stderr с --detach бесполезен с --detach отделяет процесс от исходного stderr.) --syslog сохраняется как псевдоним для --log-destination=syslog,

--log-destination всегда переопределяет неявное --syslog независимо от варианта заказа.
Это отличается от логики "последний выиграл", которая применяется к некоторым неявным опциям в других местах в Git, но, надеюсь, должна быть менее запутанной.
(Я также не знаю, все ли неявные опции в Git следуют за "последними победами".)

Сочетание --inetd с --log-destination=stderr полезно, например, при запуске git daemon как пример systemd сервис (с соответствующим сокетом).
В этом случае сообщения журнала отправляются через syslog получены демоном журнала, но рискуют быть обработанными в то время, когда git daemon процесс уже завершен (особенно если процесс был очень коротким, например, из-за ошибки клиента), так что демон журнала больше не может читать его cgroup и приложите сообщение к правильному systemd модуль (см. выпуск systemd / systemd 2913). Вход в stderr вместо этого может решить эту проблему, потому что systemd можно подключить stderr непосредственно к демону журнала, который уже знает, какой модуль связан с этим потоком.


Git 2.18 (Q2 2018) делает вещи более надежными, так как недавнее введение " --log-destination "вариант" git daemon "не работал хорошо, когда демон работал под" --inetd " Режим.

daemon.c: исправить условие для перенаправления stderr

Так как --log-destination опция была добавлена ​​в 0c591ca ("демон: добавить --log-destination=(stderr|syslog|none) ", 2018-02-04, Git 2.17) с явной целью разрешить stderr когда работает в inetd режим, мы не всегда должны перенаправлять stderr в /dev/null в режиме inetd, а точнее только когда stderr не используется для регистрации.

Если вам все еще нужно и вы хотите это сделать, я нашел способ сделать это: просто создайте сценарий bash с разрешениями на выполнение и скажите демону записать свои данные в один или два файла (если вы хотите регистрировать stderr отдельно):

#!/bin/bash

# Git daemon launchd startup command.

GIT_RO_USER="git-ro" # The user which has read only access to the repositories.

GIT_REP_BASE_PATH="/path/to/GitRepositories" # The repositories base path.

GIT_LOG_FILE="/var/log/git.log" # The git daemon log file. The user which runs the script must have the right write permissions

/path/to/git daemon --reuseaddr --verbose --user=$GIT_RO_USER --base-path=$GIT_REP_BASE_PATH $GIT_REP_BASE_PATH >> $GIT_LOG_FILE 2>&1

# Or if you like to keep the error log separated, uncomment the following lines and comment the previous one:
#GIT_ERR_LOG_FILE="/var/log/git_err.log" # The error log file
#/path/to/git daemon --reuseaddr --verbose --user=$GIT_RO_USER --base-path=$GIT_REP_BASE_PATH $GIT_REP_BASE_PATH >> $GIT_LOG_FILE 2>> $GIT_ERR_LOG_FILE

куда /path/to/git путь к команде g it Я использую это с launchd на моей машине с OS X, потому что я заметил, что вы не можете настроить StandardOutPath а также StandardErrorPath ключи для демона с использованием файла.plist.

Надеюсь, это вам тоже поможет!

Другие вопросы по тегам