Opened 2 years ago
Closed 2 years ago
#2393 closed defect (duplicate)
Error log created and opened even when overwritten in config
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.21.x |
Keywords: | error_log | Cc: | |
uname -a: | Linux bb2045015 5.4.0-xilinx #1 SMP PREEMPT Mon Jul 4 06:55:08 UTC 2022 armv7l GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.21.1
built with OpenSSL 1.1.1l 24 Aug 2021 TLS SNI support enabled configure arguments: --crossbuild=Linux:arm --with-endian=little --with-int=4 --with-long=4 --with-long-long=8 --with-ptr-size=4 --with-sig-atomic-t=4 --with-size-t=4 --with-off-t=8 --with-time-t=4 --with-sys-nerr=132 --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/run/nginx/client_body_temp --http-proxy-temp-path=/run/nginx/proxy_temp --http-fastcgi-temp-path=/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/run/nginx/uwsgi_temp --http-scgi-temp-path=/run/nginx/scgi_temp --pid-path=/run/nginx/nginx.pid --prefix=/usr --with-threads --with-http_gzip_static_module --error-log-path=/tmp/nginx-error-log --with-http_ssl_module |
Description
A file at the location of the error log, as given by the configuration flags (either the default or through --error-log-path) is created and opened, even when the error_log directive is set with the following line: error_log syslog:server=unix:/dev/log,tag=nginx,nohostname,severity=error;
This occurs both when setting this directive at the top level in nginx.conf and in the http block.
Checking with fuser
, nginx keeps open filehandles to the log file.
This is not the case for the access_log, which is only created in the location specified by the access_log directive (when set), rather than the --http-log-path configuration flag.
This may be a misunderstanding on my part, but when setting the error_log directive at the top level, I would not expect a file to be created and opened at the location indicated by the configuration flag.
The compiled-in error log is used during configuration parsing (before the error_log from nginx.conf is known), so it is always created, see #147. Starting with nginx 1.19.5, you can set error log used during configuration parsing by using the
-e
switch, see here.