当前位置:首页 > 技术文章 > 正文内容

Nginx日志分割(nginx日志详解)

arlanguage3个月前 (01-31)技术文章25

```bash

#!/bin/bash


# 常量定义

nginx_log_dir="/var/log/nginx"

nginx_pid_file="/var/run/nginx.pid"

nginx_log_file="$nginx_log_dir/access.log"

MAX_LOG_SIZE_MB=500

SPLIT_LINES=50000


# 时间戳

date_time=$(date +%Y-%m-%d_%H-%M-%S)


# 检查文件是否存在

file_exists() {

local file="$1"

if [ ! -f "$file" ]; then

echo "File $file does not exist."

return 1

fi

return 0

}


# 日志文件分割和删除

split_and_rm_log_file() {

local log_file="$1"

if file_exists "$log_file"; then

if ! split -l $SPLIT_LINES "$log_file" "${log_file}_part"; then

echo "Failed to split log file."

exit 1

fi

rm "$log_file"

fi

}


# 日志文件轮转

rotate_log_file() {

local log_file="$1"

if file_exists "$log_file"; then

mv "$log_file" "${log_file}-${date_time}"

fi

}


# 重启 Nginx

restart_nginx() {

if file_exists "$nginx_pid_file"; then

local nginx_pid=$(cat "$nginx_pid_file")

if kill -0 "$nginx_pid" &> /dev/null; then

kill -USR1 "$nginx_pid"

else

echo "Nginx process with PID $nginx_pid does not exist."

exit 1

fi

else

echo "Nginx PID file $nginx_pid_file does not exist."

exit 1

fi

}


# 主逻辑

nginx_log_split() {

local log_file="$nginx_log_file"

if file_exists "$log_file"; then

local log_size=$(stat -c%s "$log_file")

local log_size_mb=$((log_size / 1024 / 1024))

if [ "$log_size_mb" -gt $MAX_LOG_SIZE_MB ]; then

echo "Log file size is greater than ${MAX_LOG_SIZE_MB}MB. Splitting the log file."

rotate_log_file "$log_file"

restart_nginx

split_and_rm_log_file "${log_file}-${date_time}"

elif [ "$log_size_mb" -eq 0 ]; then

echo "Log file size is 0MB. No action needed."

fi

else

echo "Log file $log_file does not exist."

fi

}


# 执行主逻辑

nginx_log_split

```

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1208.html

分享给朋友:

“Nginx日志分割(nginx日志详解)” 的相关文章

轻松搭建基于 Serverless 的 ThinkPHP 应用

ThinkPHP 是什么?ThinkPHP 是一个免费开源的,快速、简单的面向对象的轻量级 PHP 开发框架,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的。ThinkPHP 从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循 Apache2 开源许可...

Nginx的location里面的root、alias的使用技巧与区别

1. 介绍1.1 介绍福哥在将TFLinux的PHP+Apache的组合转换成PHP+FPM+Nginx的过程里遇到了一个问题,就是Apache的虚拟主机转为Nginx里面的虚拟主机的时候参数怎么解决呢?今天福哥就将Nginx配置文件里面的location、root、alias的使用技巧给大家做一个...

Nginx 的日志 nginx的日志能否保存到日志审计里面?

Nginx 的日志主要有 2 个,一个是 access.log, 一个是 error.log。如果你不进行任何配置的话,这 2 个日志将会使用默认的日志配置,这个日志将会位于/var/log/nginx 目录中。针对虚拟主机的配置如果你使用了 Nginx 为虚拟主机的话。那么你可以在你的虚拟主机的配...

Nginx负载均衡安全配置说明2 nginx负载均衡配置文件

上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条号:一点热,在里面看回之前的文章,快速入口Nginx负载均衡的一些安全配置说明其实,配置Nginx的...

nginx-UrlRewrite 实现URL重写转发

URL重写在前后端分离的开发模式中,会遇到这样一个需求:前端通过特定路由前缀来访问后端接口,例如:http://localhost/api/getUser,这里 api 即是每一个前端 request 所多加的前缀。nginx 需要把http://localhost/api/getUser 转换成后...

Nginx 500 内部服务器错误排查指南

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。本文提供了解决 Nginx 500 Internal Server Error 的详尽教程,以及分步说明和故障排除建议。“500 Internal Server Error”消息对于网站所有者和 Web 开发人员来说当然是众所周知的。包括...