有人知道在Mac OSX上haproxy日志写在哪里吗?
我想使用capture cookie _secure len 32
记录发送到我的Rails后端的安全cookie。
我检查了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命令),则可能会遇到苹果的新系统完整性保护。
要禁用SIP:
csrutil disable
强烈建议您通过同样的步骤重新启用SIP,但在第3步中使用csrutil enable
。
参考资料:
使用dtruss在haproxy上查看它们被写入的位置。当您观察时,应该会出现文件I/O系统调用。
更好的方法是,它是开源的。只需查看代码即可。
在使用macOS Catalina时,我无法通过其他syslogd策略描述的方式使日志记录正常工作,但我找到了两种捕获日志的方法:
策略1:从配置中注释掉daemon,并手动运行进程(在停止任何服务实例后):sudo haproxy -f /usr/local/etc/haproxy.cfg
策略2:记录到远程rsyslog服务器,该服务器已设置为接受传入的日志:log "rsyslogserver:514" local0
,其中rsyslogserver
是服务器名称或IP。您可以查找“配置远程rsyslog日志记录 <您的操作系统/版本>”以获取有关服务器设置的详细信息。