我已经配置了这样的网站:
map $time_iso8601 $yyyy {
default '0000';
"~^(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})" $y;
}
map $time_iso8601 $mm {
default '00';
"~^(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})" $m;
}
map $time_iso8601 $dd {
default '00';
"~^(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})" $d;
}
server {
listen 80;
server_name myapp.initech.com;
error_log /sitelogs/initech/myapp/error.$yyyy-$mm-$dd.log;
access_log /sitelogs/initech/myapp/access.$yyyy-$mm-$dd.log;
location / {
root /site/initech/data/myapp;
autoindex on;
}
}
重新加载服务器并进行一些测试请求后,我的日志目录如下所示:
$ ls -1 /sitelogs/initech/myapp
access.2022-10-28.log
error.$yyyy-$mm-$dd.log
在我看来,我可以使用 map 指令来设置一个变量,该变量用于访问日志的名称,但不能用于错误日志的名称。是这样吗?
我可以合理化这一点,因为 map 指令仅在特定 HTTP 请求的上下文中运行,而从某种意义上说,错误日志必须在所有 HTTP 请求中设置。
如果是这种情况,有什么方法可以获取日期错误日志文件名?我们公司现有的日志归档流程无法很好地处理文件名冲突,因此拥有日期错误日志文件将非常非常有帮助。