Git, ведение журнала демона, как включить его и сохранить журналы в файл, например, как /var/log/git.log?

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

Тем не мение. у меня есть git daemon установить на моей машине OS X, которая работает под launchd, вот файл.plist внутри /Library/LaunchDaemons/:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.git.daemon</string>
        <key>UserName</key>
        <string>git-ro</string>
        <key>GroupName</key>
        <string>git-ro</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/bin/git</string>
        <string>daemon</string>             
                <string>--inetd</string>
                <string>--reuseaddr</string>
                <string>--verbose</string>
                <string>--base-path=/Users/git/GitRepositories/</string>
                <string>/Users/git/GitRepositories/</string>
    </array>
        <key>Sockets</key>
        <dict>
            <key>Listeners</key>
            <dict>
        <key>SockServiceName</key>
        <string>git</string>
        <key>SockType</key>
        <string>stream</string>
        <key>SockFamily</key>
        <string>IPv4</string>
            </dict>
        </dict>
        <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <false/>
    </dict>
</dict>
</plist>

Все работает как шарм, но демон записывает свою информацию в /var/log/system.log, Есть ли способ сказать ему, чтобы записать свою информацию (stdout, stderr) в выделенный файл, например, как /var/log/git.log?

Изменить: я также попытался добавить StandardOutPath а также StandardErrPath ключи к.plist, но это делает launchd неспособным запустить демон git по некоторым причинам, о которых я не знаю (я вижу Service could not initialize: для Git Daemon в /var/log/system.log):

...
<key>StandardOutPath</key>
<string>/var/log/git.log</string>
<key>StandardErrorPath</key>
<string>/var/log/git.log</string>
...

Редактировать: я отредактировал файл.plist, и демон работает с этой конфигурацией (StandardOutPath, StandardErrorPath, похоже, тоже создают проблемы). Вот рабочий:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.git.daemon</string>
        <key>UserName</key>     
        <string>git-ro</string>
        <key>GroupName</key>
        <string>staff</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/bin/git</string>
        <string>daemon</string>
                <string>--inetd</string>
                <string>--reuseaddr</string>
                <string>--verbose</string>
                <string>--base-path=/Users/git/GitRepositories/</string>
                <string>/Users/git/GitRepositories/</string>
    </array>
        <key>Sockets</key>
        <dict>
            <key>Listeners</key>
            <dict>
        <key>SockServiceName</key>
        <string>git</string>
        <key>SockType</key>
        <string>stream</string>
        <key>SockFamily</key>
        <string>IPv4</string>
            </dict>
        </dict>
        <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <false/>
    </dict>
</dict>
</plist>

Теперь, как я могу перенаправить логи демона в файл вроде /var/log/git.log?

1 ответ

@VonC указал интересный параметр, начиная с Git 2.17 (см. Его комментарий).

В любом случае, я создал простой скрипт /usr/local/bin/git-daemon-launchd и ссылался на него в конфигурации моего демона:

#!/bin/bash

# Git daemon launchd startup command.
GIT_COMMAND="/usr/local/bin/git" # The path to the git command
GIT_RO_USER="git-ro" # The user which has read only access to the repositories.
GIT_REP_BASE_PATH="/Users/git/GitRepositories" # The repositories base path.
GIT_LOG_FILE="/var/log/git.log" # The git daemon log file.

$GIT_COMMAND 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 separate, uncomment the following lines and comment the previous one (although Git logs to stderr,
# so all the logs will be at $GIT_ERR_LOG_FILE):
#GIT_ERR_LOG_FILE="/var/log/git_err.log" # The error log file
#$GIT_COMMAND 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

/Library/LaunchDaemons/org.git.daemon.plist конфигурация:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.git.daemon</string>
        <key>RunAtLoad</key>
        <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/git-daemon-launchd</string>
    </array>
</dict>
</plist>
Другие вопросы по тегам