Nginx JSON Log Format Generator
Default Format (Text):
192.168.1.1 - - [12/Oct/2024:14:00:00] "GET /api/v1/users HTTP/1.1" 200 512
192.168.1.1 - - [12/Oct/2024:14:00:00] "GET /api/v1/users HTTP/1.1" 200 512
↓
JSON Format (Structured):
{ "time": "2024-10-12T14:00:00Z", "ip": "192.168.1.1", "method": "GET", "status": 200, "latency": 0.045 }
{ "time": "2024-10-12T14:00:00Z", "ip": "192.168.1.1", "method": "GET", "status": 200, "latency": 0.045 }
Standard Nginx logs are difficult to parse and analyze.
This tool generates a valid log_format configuration to output structured JSON.
Structured logging makes your data instantly readable by observability tools like LogLens, ELK Stack (Elasticsearch), and Datadog without complex regex parsing rules.
log_format json_combined escape=json ...
How to Configure Nginx for JSON Logging
1 Open your Nginx Config
Usually located at /etc/nginx/nginx.conf.
sudo nano /etc/nginx/nginx.conf
2 Paste the Format Definition
Paste the generated code inside the http { ... } block, before any server blocks.
http {
include mime.types;
default_type application/octet-stream;
# PASTE THE GENERATED CODE HERE
log_format json_combined escape=json '{ ... }';
access_log /var/log/nginx/access.log;
}
include mime.types;
default_type application/octet-stream;
# PASTE THE GENERATED CODE HERE
log_format json_combined escape=json '{ ... }';
access_log /var/log/nginx/access.log;
}
3 Update your Access Log Directive
Find the line starting with access_log and change the format name.
# Option A: Replace text logs with JSON (Standard)
access_log /var/log/nginx/access.log combined;
access_log /var/log/nginx/access.log json_combined;
access_log /var/log/nginx/access.log combined;
access_log /var/log/nginx/access.log json_combined;
💡 Safe Mode: Want to try JSON without losing your text logs? You can keep both!
access_log /var/log/nginx/access.log combined;
access_log /var/log/nginx/access_json.log json_combined;
access_log /var/log/nginx/access_json.log json_combined;
4 Test & Reload
sudo nginx -t # Check for syntax errors
sudo nginx -s reload
sudo nginx -s reload