tengine的时间变量 $year $month $day等,在定义 access_log error_log路径的时候,reload的时候,如果没有用户访问,直接输出变量一个带单引号的日志文件,例如'www.xxx.com-$year-$month-$day-error.log' ,随后有用户访问的时候显示正常。
日志目录结构如下
├── s2.123-$year-$month-$day-error.log
├── s2.123-2023-11-14-access.log
├── www.xxx.com-$year-$month-$day-error.log
├── www.xxx.com-$year-$month-$day-access.log
├── www.xxx.com-2023-11-11-access.log
├── www.xxx.com-2023-11-12-access.log
├── www.xxx.com-2023-11-13-access.log
├── www.xxx.com-2023-11-14-access.log
├── www.123-$year-$month-$day-error.log
├── www.123-$year-$month-$day-access.log
├── www.123-2023-11-11-access.log
├── www.123-2023-11-12-access.log
├── www.123-2023-11-13-access.log
└── www.123-2023-11-14-access.log
6条答案
按热度按时间wh6knrhe1#
tengine的时间变量 $year $month $day等,在定义 access_log error_log路径的时候,reload的时候,如果没有用户访问,直接输出变量一个带单引号的日志文件,例如'www.xxx.com-$year-$month-$day-error.log' ,随后有用户访问的时候显示正常。
相关部分配置示例发一下?
nuypyhwy2#
tengine的时间变量 $year $month $day等,在定义 access_log error_log路径的时候,reload的时候,如果没有用户访问,直接输出变量一个带单引号的日志文件,例如'www.xxx.com-$year-$month-$day-error.log' ,随后有用户访问的时候显示正常。
相关部分配置示例发一下?
access_log /var/log/nginx/www.xxxx.com-$year-$month-$day-access.log combined;
error_log /var/log/nginx/www.xxxx.com-$year-$month-$day-error.log warn;
6tdlim6h3#
@xiahuan710 是用的哪个版本的 Tengine ?我用最新的 3.1.0 没有复现这个问题
1hdlvixo4#
@xiahuan710 是用的哪个版本的 Tengine ?我用最新的 3.1.0 没有复现这个问题
我是在docker下用的tengine3.1.0,alpine下安装的tengine3.1.0,无用户访问的时候变量不生效直接输出变量,有用户访问的时候会输出正确的变量,一个带没有输出值的变量的日志文件和一个正常的日志同时存在,总结一点,就是必须要用户访问变量才会取值
oxcyiej75#
@xiahuan710 是用的哪个版本的 Tengine ?我用最新的 3.1.0 没有复现这个问题
我是在docker下用的tengine3.1.0,alpine下安装的tengine3.1.0,无用户访问的时候变量不生效直接输出变量,有用户访问的时候会输出正确的变量,一个带没有输出值的变量的日志文件和一个正常的日志同时存在,总结一点,就是必须要用户访问变量才会取值
确实 error_log 会有这个问题,error_log 并没有识别文件名中的变量,如果需要日志按日期切分日志可以用 cronolog,安装 cronolog 后,配置的例子:
通过 pipe 写日志比直接写文件要好,避免因为磁盘原因卡顿进程导致影响转发性能。
vsdwdz236#
@xiahuan710 是用的哪个版本的 Tengine ?我用最新的 3.1.0 没有复现这个问题
我是在docker下用的tengine3.1.0,alpine下安装的tengine3.1.0,无用户访问的时候变量不生效直接输出变量,有用户访问的时候会输出正确的变量,一个带没有输出值的变量的日志文件和一个正常的日志同时存在,总结一点,就是必须要用户访问变量才会取值
确实 error_log 会有这个问题,error_log 并没有识别文件名中的变量,如果需要日志按日期切分日志可以用 cronolog,安装 cronolog 后,配置的例子:
通过 pipe 写日志比直接写文件要好,避免因为磁盘原因卡顿进程导致影响转发性能。
不仅仅是error会有这个问题,access也会有这个问题,当你reload的时候有用户访问就不会生成变量的日志格式,如果没用户访问的时候reload,同样会生成带无参数变量的access.log,这个应该是tengine的 一个bug