CentOS 7.0下nginx实现每天定时分割日志

yizhihongxing

下面就是 CentOS 7.0 下 nginx 实现每天定时分割日志的完整攻略。

1. 安装 logrotate 工具

logrotate 是 Linux 下用于管理日志文件的工具,我们需要先安装该工具。在 CentOS 7.0 中可以通过 yum 命令安装:

sudo yum install logrotate

2. 编写 logrotate 配置文件

在 nginx 的配置文件中,我们需要指定日志的保存目录(例如 /var/log/nginx/)和文件名(例如 access.log)。同时,我们需要通过 logrotate 配置文件来告诉 logrotate 工具如何处理这些日志。

以下是一个示例的 logrotate 配置文件,文件名为 /etc/logrotate.d/nginx

# 每天执行日志分割
daily

# 保留最近 7 天的日志文件
rotate 7

# 缩写历史日志文件名,否则会重复命名
dateext

# 如果日志文件为空则不进行日志备份
notifempty

# 指定日志文件的位置
/var/log/nginx/*.log {
    # 按照每周分割日志
    weekly

    # 保留最近 5 周的日志文件
    rotate 5

    # 使用 gzip 进行压缩
    compress

    # 指定压缩后的文件名
    missingok
    notifempty
    sharedscripts

    # 避免日志文件权限和所有者被修改
    postrotate
        /bin/kill -USR1 $(cat /run/nginx.pid 2>/dev/null) 2>/dev/null || true
    endscript
}

以上的 logrotate 配置文件中,我们指定了:

  • 每天执行日志分割;
  • 保留最近 7 天的日志文件;
  • 按照每周分割日志;
  • 保留最近 5 周的日志文件;
  • 使用 gzip 进行压缩;
  • 删除已经 compress 过的日志文件;
  • 避免日志文件权限和所有者被修改。

你需要根据自己的需求来调整这些参数。

3. 修改 nginx 配置文件

安装 logrotate 和编写配置文件之后,我们需要修改 nginx 的配置文件,以便在分割日志时不会影响 nginx 的服务。

为了实现这个目的,我们需要在 nginx 配置文件中加入如下代码:

# 定义日志格式
log_format timed_combined '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for" '
                'rt=$request_time uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time" us="$upstream_status" cs=$upstream_cache_status';

# 定义访问日志文件和格式
access_log /var/log/nginx/access.log timed_combined;

# 定义错误日志文件和级别
error_log /var/log/nginx/error.log notice;

这段代码中,我们通过 access_log 指定了访问日志保存的路径和格式,通过 error_log 指定了错误日志保存的路径和级别。

4. 测试 logrotate 操作

最后,我们可以手动执行一下 logrotate 操作来测试配置是否成功。执行以下命令:

sudo logrotate -f /etc/logrotate.d/nginx

这条命令将强制执行 logrotate 操作,而不等到定时任务执行。你可以通过查看日志文件的变化来观察是否成功完成了分割和压缩操作。

示例

例如,我们可以通过以下代码来在 nginx 中显示访问日志:

server {
    listen 80;
    server_name example.com;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    location /logs {
        alias /var/log/nginx/;
        autoindex on;
        autoindex_exact_size off;
    }
}

然后访问 http://example.com/logs,就可以看到 nginx 的访问日志了。此时,你可以手动执行一下 logrotate 操作来测试配置是否成功。

另外,我们可以通过以下代码来在 nginx 中关闭 access log:

server {
    listen 80;
    server_name example.com;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    location = /dev/null {
        access_log off;
        return 204;
    }
}

这里的 location = /dev/null 指定了一个不存在的路径,用于关闭访问日志。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS 7.0下nginx实现每天定时分割日志 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Redis C客户端库Hiredis的应用

    Redis   Redis(REmote DIctionary Server)是一个高性能的key-value数据库。  Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈…

    Redis 2023年4月13日
    00
  • Apache中启用Server Status配置示例

    下面我将介绍如何在Apache中启用Server Status配置,并给出两个示例说明。 1. 配置前的准备工作 在进入配置之前,需要确认以下两个前提条件: Apache中需要安装mod_status模块,可以通过执行以下命令来安装: sudo apt-get install libapache2-mod-status 安装完成后需要启用模块,可以通过执行以…

    database 2023年5月22日
    00
  • redis 学习笔记之(二)主备高可用(热备)

    一、背景       项目中大量的服务会依赖redis,为保证系统正常,redis 对外提供的服务必须正常。因此 redis 需要高可用。目前 redis 提供的高可用方案如下: (1) redis 哨兵模式 实现 redis 主备 (2) keepalived + redis 实现主备      对于性能,使用分片模式,即 redis 搭建集群解决 性能问…

    Redis 2023年4月11日
    00
  • Red Hat Linux redis 安装配置

    最近在学习redis,刚开始尝试在red hat Linux服务安装总是不成功,经过几次尝试终于配置成功,现将过程整理如下: 服务器环境: Red Hat Enterpriserver Linux 6.5 Redis版本:3.2.1 1 从http://www.redis.net.cn/download/下载redis对应的版本文件redis-3.2.1.t…

    Redis 2023年4月11日
    00
  • Python的Django框架中的select_related函数对QuerySet 查询的优化

    在Python的Django框架中,Django提供了select_related函数,可以对QuerySet查询进行优化,减少数据库查询次数,提升网站性能。接下来,我将为你详细讲解如何使用select_related函数,以及使用select_related函数的优势。 什么是select_related函数 select_related是Django框架…

    database 2023年5月22日
    00
  • Ubuntu下安装redis的2种方法分享

    Ubuntu是一种基于Debian的GNU/Linux操作系统,其下载量已经超过4000万。在Ubuntu下安装Redis可以提升系统的性能,本文将分享两种方法,让您能够安装Redis。 方法1:使用Ubuntu官方软件库安装Redis Ubuntu官方软件库存储了各种免费的软件。使用以下命令来在Ubuntu上安装Redis: sudo apt update…

    database 2023年5月22日
    00
  • Weaviate和VoltDB的区别

    Weaviate和VoltDB都是目前流行的开源数据库,它们具有不同的特点和应用场景。下面对它们的区别进行详细讲解。 Weaviate和VoltDB的简介 Weaviate Weaviate是一款基于向量搜索的开源智能图谱系统。它是一种全文搜索系统,也是一种文本检索系统。Weaviate的主要特点是高效、快速、可扩展和可靠,可用于大量脱敏数据的搜索和分析。W…

    database 2023年3月27日
    00
  • 如何使用Python在MySQL中修改表结构?

    要使用Python在MySQL中修改表结构,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中修改表结构的完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接MySQL: mysql.conne…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部