nginx日志按照小时分割的方法

来源:网络 点击数: 发布时间:2022年05月06日

全局通用配置,http模块里设置,这样所有域名的访问日志都会被记录下来

理论上可以分割到毫秒秒,但是太占用资源,不太推荐

http {

#.....

#设置变量 year month day hour minutes seconds

map $time_iso8601 $year {

   default '0000';

   "~^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $1;

}

map $time_iso8601 $month {

   default '00';

   "~^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $2;

}

map $time_iso8601 $day {

   default '00';

   "~^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $3;

}

map $time_iso8601 $hour {

   default '00';

   "~^^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $4;

}

map $time_iso8601 $minutes {

   default '00';

   "~^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $5;

}

map $time_iso8601 $seconds {

   default '00';

   "~^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})" $6;

}

 

# 日志格式

log_format  commonlog 'v1{|]$remote_addr:$remote_port{|]$http_x_forwarded_for{|]$upstream_addr{|]$time_iso8601{|]$request_method{|]$h

ost{|]$uri{|]$args{|]$status{|]$http_referer{|]$body_bytes_sent{|]$request_time{|]$upstream_response_time{|]$http_user_agent{|]$sent_

http_location{|]$http_cookie{|]$sent_http_content_type{|]$request_body{|]';

 

#记录日志,按天切割,也可以根据需要按小时切割

access_log  logs/access_$year$month$day$hour.log  commonlog;

 

#.....

}