温馨提示×

如何解析nginx日志时间

小樊
47
2026-09-14 18:22:39
栏目: 编程语言

解析 Nginx 日志中的时间,关键取决于你使用的是 哪种日志格式(默认或自定义)。下面从常见格式、字段含义、解析方法三个层面说明。


一、Nginx 常见日志格式中的时间

1️⃣ 默认 access_log 格式(combined / common)

默认配置通常是:

log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

示例日志:

192.168.1.10 - - [10/Feb/2024:13:45:22 +0800] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0"

时间字段

[10/Feb/2024:13:45:22 +0800]

对应变量:

  • $time_local

格式说明:

dd/Mon/yyyy:HH:mm:ss ±zzzz

2️⃣ $time_iso8601(推荐,便于解析)

如果你在 Nginx 中配置了:

log_format json escape=json '{'
  '"time":"$time_iso8601",'
  '"remote_addr":"$remote_addr",'
  '"request":"$request",'
  '"status":$status
'}';

示例:

{"time":"2024-02-10T13:45:22+08:00","remote_addr":"192.168.1.10","request":"GET / HTTP/1.1","status":200}

ISO8601 时间:

2024-02-10T13:45:22+08:00

✅ 更易解析,推荐用于日志分析系统


二、时间格式说明

$time_local

10/Feb/2024:13:45:22 +0800
部分 含义
10 日
Feb 月份缩写
2024 年
13:45:22 时:分:秒
+0800 时区

$time_iso8601

2024-02-10T13:45:22+08:00
部分 含义
T 日期和时间分隔符
+08:00 时区(ISO 标准)

三、如何解析 Nginx 日志时间(示例)

✅ Shell(awk + date)

awk -F'[][]' '{print $2}' access.log | head

转换为标准时间:

date -d "10/Feb/2024:13:45:22 +0800" "+%Y-%m-%d %H:%M:%S"

✅ Python 解析

解析 $time_local

from datetime import datetime

t = "10/Feb/2024:13:45:22 +0800"
dt = datetime.strptime(t, "%d/%b/%Y:%H:%M:%S %z")
print(dt)

解析 $time_iso8601

from datetime import datetime

t = "2024-02-10T13:45:22+08:00"
dt = datetime.fromisoformat(t)
print(dt)

✅ Go 解析

import (
    "time"
    "fmt"
)

func main() {
    t, _ := time.Parse("02/Jan/2006:15:04:05 -0700",
        "10/Feb/2024:13:45:22 +0800")
    fmt.Println(t)
}

✅ 日志分析工具

  • ELK / Elasticsearch:grok 模式
\[%{HTTPDATE:timestamp}\]
  • Fluent Bit / Logstash:自动支持 time_local

四、最佳实践建议

✅ 新项目推荐:

log_format json escape=json '{ "time":"$time_iso8601" }';

✅ 老日志:

  • 用 strptime("%d/%b/%Y:%H:%M:%S %z")

✅ 时区统一(避免 +0800 / UTC 混乱)


如果你有:

  • 具体日志样例
  • 使用语言(Python / Go / Shell)
  • 是否在 ELK / Grafana / ClickHouse

我可以给你精确解析代码。

0 踩