未写入Apache错误日志的错误

I've had a problem with some Apache web server error logs.

I have a virtually hosted website scotthermmann.loc on my computer. After I manually clear an error log, using

sudo cat /dev/null > scotthermmann.loc-error_log

or by opening the file in emacs & deleting all content, errors no longer get logged to the file. I've tried using

sudo apachectl restart

to solve the problem, but it doesn't solve it. Logging out & back in doesn't solve it either. What does solve it is restarting the computer, but I don't want to do that after every time I clear an error log.

This isn't the case for every website I host. I have another website barefootfool.loc. After I clear that error log, I don't have any problems.

Both virtual sites have essentially the same setup in the httpd-vhosts.conf file. For scottherrmann.loc:

<VirtualHost *:80>
    DocumentRoot "/Users/dan/Sites/scottherrmann.com"
    ServerName scottherrmann.loc
    ServerAlias www.scottherrmann.loc
    ErrorLog "/private/var/log/apache2/scottherrmann.loc-error_log"
    CustomLog "/private/var/log/apache2/scottherrmann.loc-access_log"

    <Directory "/Users/dan/Sites/scottherrmann.com">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all 
    </Directory>
</VirtualHost>

And for barefootfool.loc:

<VirtualHost *:80>
    DocumentRoot "/Users/dan/Sites/barefootfool.com"
    ServerName barefootfool.loc
    ServerAlias www.barefootfool.loc
    ErrorLog "/private/var/log/apache2/barefootfool.loc-error_log"
    CustomLog "/private/var/log/apache2/barefootfool.loc-access_log"

    <Directory "/Users/dan/Sites/barefootfool.com">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all 
    </Directory>
</VirtualHost>

Does anyone have an idea what could be causing the problem?

Probably it is because you run the tomcat with the user apachectl and when you clear the log file with the command sudo cat /dev/null > scotthermmann.loc-error_log the user that execute this command take the ownership of the file then the user apachectl can't write on it anymore. Try to run the cleanup command as this:

sudo apachectl cat /dev/null > scotthermmann.loc-error_log

I just had this it was because I inadvisably deleted the /var/log/httpd/error_log file and then touched a new log file.

service httpd restart

cleared the problem . next time I'll truncate the error_log with

:>error_log