有没有办法更改错误日志文件名。无论我做什么,当请求得到处理时,我总是将错误日志写入默认文件名“error.log”。我在主上下文中有一个全局且只有一个错误日志配置:
user npcache;
worker_processes 2;
error_log /opt/logs/nginx/error1.log notice;
pid /opt/logs/nginx/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
http {
error_log /opt/logs/nginx/error.log notice;
include ./mime.types;
default_type application/octet-stream;
#Access log configuration
log_format main '"$remote_addr" "$host" "$http_host" ["$time_local"]'
'"$request" $status $body_bytes_sent "$http_referer"';
access_log /opt/logs/nginx/access.log main;
. . .
}
通过此配置,我将错误日志写入 /opt/logs/nginx/error.log 而不是“error1.log”。
我在配置中遗漏了什么吗?
我发现该问题与 http 上下文中的第二个错误日志有关,该日志掩盖了顶层错误日志。
谢谢
答案1
您需要在 nginx.conf 中发布类似这样的内容,可能位于 /etc/nginx/nginx.conf 中。它位于文件顶部,事件和 http 块之外。您也可以将其放在服务器或位置级别。文档在这里。
error_log /var/log/nginx/error.log warn;
Nginx 文档非常出色,许多疑问已经在 Server Fault 和网上得到解答。有时搜索可以节省您等待别人回答您的问题的时间。
答案2
你显然无法改变最初的错误日志,它设置了一个编译时间。这最初的在接受连接之前,log 用于报告配置文件等中的错误。
我理解这背后的逻辑,但我认为这不是一个好的选择。这意味着,如果您想在系统中以不同的(非 root)用户身份运行多个 NGINX,您必须拥有 root 访问权限才能使 /var/log/nginx/* 日志目录可供普通用户写入。
@nginx 开发人员:我建议发送最初的正如传统所说,错误发送到 STDERR......