I reported this bug already at
http://thread.gmane.org/gmane.comp.web.nginx.english/1604/focus=1628
but was using the stable version of nginx. I just upgraded to the
latest development version, 0.7.30, and the bug is still there:
I want to have separate error logs for each virtual host. Here is my
config file, with only one host so far:
error_log logs/main_error.log;
events {
worker_connections 1024;
}
http {
error_log logs/http_error.log;
server {
server_name myname.org;
access_log logs/the_org.access;
error_log logs/the_org.error;
}
}
Here is the problem: when the server receives a request for
http://myname.org/nonexistent.file, the request shows up in the access
log (the_org.access), but all 3 error logs remain blank. The error
only shows up in the main_error.log if I comment the
“error_log logs/http_error.log;”
and
“error_log logs/the_org.error;”
lines.
Can this bug please be fixed? Lighttpd’s author refused to implement
error log separation (see
http://www.wikivs.com/wiki/Lighttpd_vs_nginx#Separated_error_logging_per_virtual_server)
and I really hoped that nginx could do better…
Best regards,
Dan Dascalescu
Conditional error logging is one thing I’d like to see, I’ve asked in
the past.
For things like
if ($remote_addr ~ 10.22.33.44) {
error_log off;
}
or location / server block based, etc?
On Wed, Jan 7, 2009 at 9:09 PM, Dan Dascalescu
Maxim D. <mdounin@…> writes:
The problem is that nginx sets reasonable logging level
automatically only for global error_log (it’s defaults to error if
not defined). For others it’s defaults to stderr, i.e. nothing is
logged. Solution is simple - explicitly specify logging level:
[…]
Since there is no official documentation for error_log directive
at all - this probably can’t be considered as a bug. It’s up to
Igor either fix it or document as is.
Thanks for the help. I documented this on the wiki at
http://wiki.codemongers.com/NginxHttpMainModule#error_log. Feel free to
correct
as necessary (in particular, I’m not sure about the default error log
levels).
Dan
Hello!
On Wed, Jan 07, 2009 at 09:09:02PM -0800, Dan Dascalescu wrote:
events {
}
Here is the problem: when the server receives a request for
myname.org, the request shows up in the access
log (the_org.access), but all 3 error logs remain blank. The error
only shows up in the main_error.log if I comment the
“error_log logs/http_error.log;”
and
“error_log logs/the_org.error;”
lines.
The problem is that nginx sets reasonable logging level
automatically only for global error_log (it’s defaults to error if
not defined). For others it’s defaults to stderr, i.e. nothing is
logged. Solution is simple - explicitly specify logging level:
error_log logs/main_error.log error;
events {
worker_connections 1024;
}
http {
error_log logs/http_error.log error;
server {
server_name myname.org;
access_log logs/the_org.access;
error_log logs/the_org.error error;
}
}
Since there is no official documentation for error_log directive
at all - this probably can’t be considered as a bug. It’s up to
Igor either fix it or document as is.
Maxim D.
On Thu, Jan 08, 2009 at 01:36:31PM +0300, Maxim D. wrote:
error_log logs/main_error.log;
error_log logs/the_org.error;
lines.
}
Since there is no official documentation for error_log directive
at all - this probably can’t be considered as a bug. It’s up to
Igor either fix it or document as is.
The attached patch should fix the bug.