首页 > 系统相关 >[转帖]Nginx access log 按日期保存记录

[转帖]Nginx access log 按日期保存记录

时间:2024-01-15 09:00:26浏览次数:35  
标签:转帖 set log access time 日志 logs

https://cloud.tencent.com/developer/article/1958304

 

$time_iso8601    生成格式:2021-09-18T15:16:35+08:00 $time_local          生成格式: 18/Sep/2021:15:12:13 +0800

网络流传的nginx access log分割都是写shell脚本然后做定时任务来分割日志,操作中自由度比较高,可以用正则按需要分割日志,但如果只是想按日期保存日志,可以用以下方法

server
{
   ……
   #从系统时间中正则匹配出年月日
   if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
      set $date $1$2$3;
   }
   
   # 日期记录日志
   access_log  logs/$date.host.access.log;
}

我的服务器 nginx version: nginx/1.14.1 测试该方法可用

 

 

更详细的日期变量设置,按需使用

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})"){    
    set $year $1;    
    set $month $2;    
    set $day $3;    
    set $hour $4;    
    set $minutes $5;    
    set $seconds $6;
}

据说还有Perl方法捕获日期变量,不过本人没有试过,有兴趣的可以试试

if ($time_iso8601 ~ "^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})") {

}
 # 日期记录日志access_log  logs/$year$month$day-host.access.log;

配合定时任务删除n天前的日志

先创建 .sh脚本

cd ~vi clearLogs.sh

添加内容

 #!/bin/bash find /logs/ -mtime +10 -name "*.log" -exec rm -rf {} \;

说明:将/logs/目录下所有10天前带".log"的文件删除。 具体参数说明如下: find:linux的查找命令,用户查找指定条件的文件; /logs/:想要进行清理的任意目录; -mtime:标准语句写法; +10:查找10天前的文件,这里用数字代表天数; "*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三; -exec:固定写法; rm -rf:强制删除文件,包括目录; {} \; :固定写法,一对大括号+空格+\+;

#执行命令crontab -e #添加代码每天凌晨1点定时执行脚本00 01  * * * /root/clearLogs.sh

标签:转帖,set,log,access,time,日志,logs
From: https://www.cnblogs.com/jinanxiaolaohu/p/17964616

相关文章

  • PostgreSQL 数据库日志收集功能开启一什么时候写-参数 log_min_messages 等其他参数设
    log_min_messages(enum)控制将哪些消息级别写入服务器日志。可以取值为:DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、LOG、FATAL、PANIC。每个关卡都包含了它之后的所有关卡。级别越高,发送到日志的消息就越少。默认值是WARNING。注意,这里的LOG......
  • PostgreSQL 数据库日志收集功能开启-参数 log_truncate_on_rotation 设置
    log_truncate_on_rotation(boolean)--默认为off,设置为on的话,文件内容覆盖方式:off后面附加,on:清空再加当启用logging_collector时,此参数将导致PostgreSQL截断(覆盖)而不是追加到任何同名的现有日志文件。但是,截断只会在由于基于时间的旋转而打开新文件时发生,而不会在服务......
  • PostgreSQL 数据库日志收集功能开启-参数 syslog_ident 等其他参数设置
    syslog_ident(string)当日志记录到syslog日志时,该参数决定了用于识别syslog日志中PostgreSQL消息的程序名称。默认为postgres。该参数只能在postgresql.conf文件或服务器命令行中设置。syslog_sequence_numbers(boolean)当日志记录到syslog并且开启此选项时(默认设置......
  • PostgreSQL 数据库日志收集功能开启-参数 log_file_mode 设置
    log_file_mode(integer)日志文件权限,默认为0600在Unix系统上,当启用logging_collector时,此参数设置日志文件的权限。(在MicrosoftWindows上,此参数被忽略。)参数值应该是一个数字模式,以chmod和umask系统调用接受的格式指定。(要使用习惯的八进制格式,数字必须以0(零)开头......
  • PostgreSQL 数据库日志收集功能开启-参数 log_rotation_age 设置
    log_rotation_age(integer)--保留单个文件的最大时长,默认是1d,也有1h,1min,1s当启用logging_collector时,该参数决定使用单个日志文件的最大时间,之后将创建一个新的日志文件。如果不指定单位,则以分钟为单位。默认为24小时。设置为0将禁用基于时间的新日志文件创建。该......
  • PostgreSQL 数据库日志收集功能开启-参数 log_rotation_size 设置
    log_rotation_size(integer)--保留单个文件的最大尺寸,默认是10MB当启用logging_collector时,该参数确定单个日志文件的最大大小。将此数量的数据发送到日志文件后,将创建一个新的日志文件。如果该值没有指定单位,则以千字节为单位。默认值是10兆字节。设置为0将禁用基于大......
  • PostgreSQL 数据库日志收集功能开启-参数 log_filename 设置
    日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log当启用logging_collector时,该参数设置创建的日志文件的文件名。该值被视为strftime(根据区域设置格式化本地时间/格式/时间格式)模式,因此可以使用%-转义来指定随时间变化的文件名。(注意,如果有任何与时区相关的%-转义,计算将......
  • PostgreSQL 数据库日志收集功能开启-参数 log_destination 设置
    一log_destination(string)日志记录类型,默认是stderr,只记录错误输出,推荐csvlog,总共包含:stderr,csvlog,syslog,andeventlog.PostgreSQL支持多种记录服务器消息的方法,包括stderr、csvlog、jsonlog和syslog。在Windows上,也支持eventlog。将此参数设置为以逗号分隔的......
  • PostgreSQL 数据库日志收集功能开启-参数 logging_collector 设置
    PostgreSQL数据库默认数据库日志收集功能为关闭,但PostgreSQL官方建议开启该参数,但该参数开启需要配合多个参数才能完成,本节只介绍logging_collector  ,如下一logging_collector(boolean)logging_collector   --是否开启日志收集开关,默认off,推荐onThisparameterenabl......
  • UniLoginForm无边框的方法
    UniLoginForm无边框的方法在应用系统的登录界面,我们一般采用无边框的方式,在VCL模式下,一般将登录界面的窗体的BorderStyle属性设置为bsNone即可。但采用UniGUI的TUniLoginForm方式,设置了窗体的BorderStyle属性为bsNone,其显示也带边框:我们采用下面解决办法:为登录UniLoginForm1......