5

有谁知道haproxy在mac osx上的哪里写日志?我想使用capture cookie _secure len 32.

我检查了 Console.app,但那里没有显示日志。

4

4 回答 4

4

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
于 2013-09-19T15:17:07.733 回答
2

鉴于我无法发表评论(嘘,声誉),我想在 alanning 中添加以下内容:

如果您运行的是 OS X 10.11+(El Capitan 或更新版本)并且无法复制 plist 文件(即使使用 sudo),您可能会遇到 Apple 新的系统完整性保护。

要禁用 SIP:

  1. 重新启动进入恢复模式(重新启动并按住 Cmd-R)
  2. 打开终端
  3. 使用这个命令:csrutil disable
  4. 重新启动并运行在 El Capitan 之前有效的命令

强烈建议您按照相同的步骤重新启用 SIP,但csrutil enable在步骤 3 中使用。

参考:

如何在 Stack Overflow 上禁用无根模式

Apple.com 上的系统完整性保护

于 2016-01-07T13:05:54.580 回答
0

在 haproxy 上使用 dtruss 来查看它们的写入位置。您应该在观看时看到文件 I/O 系统调用通过。

更好的是,它是开源的。只看代码。

于 2013-03-15T01:10:23.167 回答
0

在使用 macOS Catalina 时,我无法通过描述的其他 syslogd 策略进行日志记录,但我找到了两种捕获日志的方法:

策略1:从配置中注释掉守护进程,并手动运行进程(在停止任何服务实例之后):sudo haproxy -f /usr/local/etc/haproxy.cfg

策略 2:登录到远程 rsyslog 服务器,该服务器设置为接受传入的日志:log "rsyslogserver:514" local0,其中rsyslogserver是服务器名称或 ip。您可以查看“配置远程 rsyslog 日志记录<您的操作系统/版本在此处>”以获取有关服务器设置的详细信息。

于 2019-10-11T17:04:04.510 回答