Где хранятся журналы 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.
Надеюсь, это вам тоже поможет!