我将 git-daemon 作为 Windows 服务运行。(使用Create Process)
服务中使用的命令是:
git daemon --reuseaddr --base-path=/data/test_work/ --export-all \
--verbose --enable=receive-pack
我在哪里可以看到的日志git daemon
?
注意: 没有文件/var/logs
。
我将 git-daemon 作为 Windows 服务运行。(使用Create Process)
服务中使用的命令是:
git daemon --reuseaddr --base-path=/data/test_work/ --export-all \
--verbose --enable=receive-pack
我在哪里可以看到的日志git daemon
?
注意: 没有文件/var/logs
。
如果您仍然需要并且想要这样做,我已经找到了一种方法:只需创建一个具有执行权限的 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
git 命令的路径在哪里。我在我的 OS X 机器上使用它,launchd
因为我注意到您无法使用 .plist 文件为守护程序设置StandardOutPath
和密钥。StandardErrorPath
希望对你也有帮助!
我在哪里可以看到 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
avar
gitster
sunshineco
gitster
daemon
: 添加--log-destination=(stderr|syslog|none)
这个新选项可用于覆盖 的隐式
--syslog
,--inetd
或禁用所有日志记录。(虽然--detach
也暗示--syslog
,--log-destination=stderr
with--detach
是无用的,因为--detach
将进程与原始 stderr 解除关联。)--syslog
保留为--log-destination=syslog
.
--log-destination
--syslog
无论选项顺序如何,总是覆盖隐式。
这与适用于 Git 其他地方的一些隐式选项的“最后一个获胜”逻辑不同,但希望不会那么混乱。
(我也不知道Git 中的所有隐式选项是否都遵循“最后一个获胜”。)
--inetd
with的组合--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) 中添加的,其明确目标是允许stderr
在inetd
模式下运行时登录,因此我们不应总是重定向stderr
到/dev/null
inetd 模式,而应仅在stderr
未用于记录。