有谁知道haproxy在mac osx上的哪里写日志?我想使用capture cookie _secure len 32
.
我检查了 Console.app,但那里没有显示日志。
HAProxy 将日志记录到 syslog,因此您检查 Console.app 以查看输出是正确的。
问题是在 OSX 上,您首先需要设置 syslog 以包含它的网络侦听器。
以下是对我有用的说明[来源]:
HA Proxy Logging on Lion
-------------------------
# To enable haproxy logging we need to change syslogd
# startup procedure to include its network listener.
# Backup syslogd start up file
sudo cp /System/Library/LaunchDaemons/com.apple.syslogd.plist /System/Library/LaunchDaemons/com.apple.syslogd.plist.bakup
# Convert binary file to xml to be human readable / editable
sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist
# Edit /System/Library/LaunchDaemons/com.apple.syslogd.plist
# and add the following snippet under the sockets node
<key>NetworkListener</key>
<dict>
<key>SockServiceName</key>
<string>syslog</string>
<key>SockType</key>
<string>dgram</string>
</dict>
# Should read like this now
<key>Sockets</key>
<dict>
<key>AppleSystemLogger</key>
<dict>
<key>SockPathMode</key>
<integer>438</integer>
<key>SockPathName</key>
<string>/var/run/asl_input</string>
</dict>
<key>BSDSystemLogger</key>
<dict>
<key>SockPathMode</key>
<integer>438</integer>
<key>SockPathName</key>
<string>/var/run/syslog</string>
<key>SockType</key>
<string>dgram</string>
</dict>
<key>NetworkListener</key>
<dict>
<key>SockServiceName</key>
<string>syslog</string>
<key>SockType</key>
<string>dgram</string>
</dict>
</dict>
# Save the file
# Convert back to binary file
sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist
# Restart syslogd
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
# I added the following entry to /etc/syslog.conf
local2.* /var/log/haproxy.log
# Include logging options in haproxy.cfg
global
log 127.0.0.1 local2 debug
defaults
mode http
option httplog
log global
# Restart HAproxy
鉴于我无法发表评论(嘘,声誉),我想在 alanning 中添加以下内容:
如果您运行的是 OS X 10.11+(El Capitan 或更新版本)并且无法复制 plist 文件(即使使用 sudo),您可能会遇到 Apple 新的系统完整性保护。
要禁用 SIP:
csrutil disable
强烈建议您按照相同的步骤重新启用 SIP,但csrutil enable
在步骤 3 中使用。
参考:
在 haproxy 上使用 dtruss 来查看它们的写入位置。您应该在观看时看到文件 I/O 系统调用通过。
更好的是,它是开源的。只看代码。
在使用 macOS Catalina 时,我无法通过描述的其他 syslogd 策略进行日志记录,但我找到了两种捕获日志的方法:
策略1:从配置中注释掉守护进程,并手动运行进程(在停止任何服务实例之后):sudo haproxy -f /usr/local/etc/haproxy.cfg
策略 2:登录到远程 rsyslog 服务器,该服务器设置为接受传入的日志:log "rsyslogserver:514" local0
,其中rsyslogserver
是服务器名称或 ip。您可以查看“配置远程 rsyslog 日志记录<您的操作系统/版本在此处>”以获取有关服务器设置的详细信息。