4

我将 git-daemon 作为 Windows 服务运行。(使用Create Process)
服务中使用的命令是:

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

我在哪里可以看到的日志git daemon

注意: 没有文件/var/logs

4

2 回答 2

1

如果您仍然需要并且想要这样做,我已经找到了一种方法:只需创建一个具有执行权限的 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/gitgit 命令的路径在哪里。我在我的 OS X 机器上使用它,launchd因为我注意到您无法使用 .plist 文件为守护程序设置StandardOutPath和密钥。StandardErrorPath

希望对你也有帮助!

于 2015-08-19T14:16:10.360 回答
1

我在哪里可以看到 git daemon 的日志?

Git 2.17(2018 年第一季度)可以提供帮助,因为来自“ git daemon”的日志可以使用新选项重定向;一个相关的用例是在从inetd.

请参阅Lucas Werkmeister ( ) 的提交 0c591ca(2018 年 2 月 4 日。 帮助者:Ævar Arnfjörð Bjarmason ( )Junio C Hamano ( )Eric Sunshine ( )(由Junio C Hamano 合并 -- --提交 c2bd43d中,2018 年 2 月 21 日)lucaswerkmeister
avargitstersunshineco
gitster

daemon: 添加--log-destination=(stderr|syslog|none)

这个新选项可用于覆盖 的隐式--syslog--inetd或禁用所有日志记录。(虽然--detach也暗示--syslog, --log-destination=stderrwith--detach是无用的,因为--detach将进程与原始 stderr 解除关联。)--syslog保留为--log-destination=syslog.

--log-destination--syslog无论选项顺序如何,总是覆盖隐式。
这与适用于 Git 其他地方的一些隐式选项的“最后一个获胜”逻辑不同,但希望不会那么混乱。
(我也不知道Git 中的所有隐式选项是否都遵循“最后一个获胜”。)

--inetdwith的组合--log-destination=stderr很有用,例如,当git daemon作为实例systemd服务运行时(带有关联的套接字单元)。
在这种情况下,通过 发送syslog的日志消息被日志守护进程接收,但存在在进程已经退出时被处理的风险git daemon(特别是如果进程非常短暂,例如由于客户端错误),所以日志守护程序不能再读取它cgroup并将消息附加到正确的systemd单元(参见systemd/systemd issue 2913)。登录到stderr相反可以解决这个问题,因为systemd可以stderr直接连接到日志守护程序,然后它已经知道哪个单元与该流相关联。


Git 2.18(2018 年第二季度)使事情变得更加健壮,因为当守护进程在“ ”模式下运行时,最近引入的“ --log-destination”选项git daemon不能很好地工作。--inetd

daemon.c:修复重定向条件stderr

由于该--log-destination选项是在0c591ca ("daemon: add --log-destination=(stderr|syslog|none)", 2018-02-04, Git 2.17) 中添加的,其明确目标是允许stderrinetd模式下运行时登录,因此我们不应总是重定向stderr/dev/nullinetd 模式,而应仅在stderr未用于记录。

于 2018-02-25T19:36:43.167 回答