I'm running a local web (development) server on my mac with apache installed.

I'm sure it depends on my apache config but basically I just want to run tail -f /var/log/httpd-error.log in a terminal so I can see the error and warnings that occur during the development of my websites.

So my question is where or how do I find where this log file is placed since it is not placed in /var/log/


As morth pointed out, for the default Mac OS X Apache installation these are located in: /var/log/apache2/error_log.

The location can be changed in the httpd config using the ErrorLog directive, even for individual virtual hosts. Also note that if you installed another Apache besides the built-in one (like through MacPorts, or MAMP), this probably is different for you too. In that case you should have a look at the httpd.conf or equivalent for your installation.

tip: If you have Growl installed, also have a look at this 'growltail' script. I think it's great to get notified of errors while developing, without having the need to switch back to the Terminal all the time.

|improve this answer|||||
  • 3
    Doesn't lion use apache2 and not apache in /var/log to contain the web server logs? Also, the Console app in /Applications/Utilities is the "Cocoa" log viewer, but it's not as handy as tail for most developers other than to explore the contents of /var/log or peek at multiple logs for short durations. – bmike Feb 20 '12 at 15:01

Is /private/var/log/apache2/error_log what you are looking for?

|improve this answer|||||

The Error Log is located at: /var/log/apache2/error.log

This is for Lion...

|improve this answer|||||

The answers above work great for the default apache that comes pre-installed on the mac. In my case, I'm using Apache (on High Sierrra) installed via Homebrew. Here's the procedure I used to locate my error log:

>ps -ef |grep httpd

This gives an output with lines like this:

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

That gives you the location of the httpd executable. Now run:

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

Substituting in the location of your httpd executable. You'll get something like this (shortened)

Server compiled with....
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -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"

So the "DEFAULT_ERRORLOG" is in logs/error_log - but relative to what?


There, I found two entries that might be helpful:

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

So in some cases the DEFAULT_ERRORLOG might be relative to ServerRoot. In my case though, there was an ErrorLog explicitly specified (second line) and that's where my errors are going.

|improve this answer|||||
  • This is exactly what I needed. Thank you Witt! – Nick K9 Feb 21 at 21:25

It's normally /var/log/apache2/error_log but...

Note that there's certain types of errors which can occur before apache starts logging, which might lead you to believe that you're looking in the wrong place. If you seem to be having trouble starting apache, and it's not logging any new errors, try doing:

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

or try

sudo apachectl -e debug

or bypass the apachectl script and try just

sudo httpd -k start
|improve this answer|||||
#/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_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -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
|improve this answer|||||

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .