Lion上的httpd错误日志文件在哪里?


39

我在装有apache的Mac上运行本地Web(开发)服务器。

我确定这取决于我的apache配置,但基本上我只想tail -f /var/log/httpd-error.log在终端中运行,这样我就可以看到在我的网站开发过程中发生的错误和警告。

所以我的问题是,由于未将该日志文件放置在何处或如何找到该文件 /var/log/

Answers:


59

正如morth所指出的,对于Mac OS X Apache的默认安装,它们位于:中/var/log/apache2/error_log

即使使用单个虚拟主机,也可以使用ErrorLog指令在httpd配置中更改位置。还要注意,如果您安装了内置Apache之外的另一个Apache(例如通过MacPorts或MAMP),那么这对您也可能会有所不同。在这种情况下,您应该查看安装的httpd.conf或等效文件。

tip:如果您安装了Growl,还请查看此' groltail '脚本。我认为在开发过程中收到错误通知非常好,而不必一直切换回终端。


3
狮子不使用apache2而不在/ var / log中使用apache来包含Web服务器日志吗?另外,/ Applications / Utilities中的Console应用程序是“ Cocoa”日志查看器,但对于大多数开发人员而言,它不像尾巴方便,除了可以浏览/ var / log的内容或在短时间内浏览多个日志。
bmike



4

通常是/var/log/apache2/error_log...

请注意,在apache开始记录之前,可能会发生某些类型的错误,这可能会导致您认为自己在错误的位置。如果您似乎在启动apache时遇到问题,并且没有记录任何新错误,请尝试执行以下操作:

sudo bash -x /usr/sbin/apachectl -k start

或尝试

sudo apachectl -e debug

或绕过apachectl脚本并尝试

sudo httpd -k start

3

上面的答案对于Mac上预装的默认Apache很有用。就我而言,我使用的是通过Homebrew安装的Apache(在High Sierrra上)。这是我用来定位错误日志的过程:

>ps -ef |grep httpd

这给出了带有以下行的输出:

502 10587 10586   0 11:11AM ??         0:00.00 /usr/local/opt/httpd/bin/httpd -k start

这样就可以找到httpd可执行文件的位置。现在运行:

>/usr/local/opt/httpd/bin/httpd -V

替换您的httpd可执行文件的位置。你会得到这样的东西(缩短)

Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local/Cellar/httpd/2.4.29_1"
 -D SUEXEC_BIN="/usr/local/opt/httpd/bin/suexec"
 -D DEFAULT_PIDLOG="/usr/local/var/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/usr/local/etc/httpd/mime.types"
 -D SERVER_CONFIG_FILE="/usr/local/etc/httpd/httpd.conf"

因此,“ DEFAULT_ERRORLOG”位于logs/error_log-但相对于什么?

现在打开“ SERVER_CONFIG_FILE”

在那里,我发现了两个条目可能会有所帮助:

ServerRoot "/usr/local/opt/httpd"
ErrorLog "/usr/local/var/log/httpd/error_log"

因此,在某些情况下,DEFAULT_ERRORLOG可能是相对于ServerRoot的。在我的情况下,有一个明确指定的ErrorLog(第二行),这就是我的错误所在。


0
#/usr/sbin/httpd -V
Server version: Apache/2.2.24 (Unix)
Server built:   Aug 24 2013 21:10:43
Server's Module Magic Number: 20051115:31
Server loaded:  APR 1.4.5, APR-Util 1.3.12
Compiled using: APR 1.4.5, APR-Util 1.3.12
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

#find / -name error_log
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.