对Caddy2原生的富文本json日志文件,改为common_log
通用格式,使日志文件更易读,同时降低不同Web服务器日志格式的差异化程度。
首先,我们先来看一下默认情况下可用的日志配置
1
2
3
4
5
6
7
8
9
10
|
example.com {
reverse_proxy * 127.0.0.1:8080
log {
output file /root/data/caddy/log/example.com/access.log {
roll_size 25MB
roll_keep 10
roll_keep_for 24h
}
}
}
|
在这个配置内,设置了站点日志输出目录,文件滚动大小和最长保留时间
这个配置可以简单的把原生的富文本(不易阅读),转换为更为常用且易于阅读的common_log格式
1
2
3
4
5
6
7
8
9
10
11
12
13
|
example.com {
reverse_proxy * 127.0.0.1:8080
log {
format transform `{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` {
time_format "02/Jan/2006:15:04:05 -0700"
}
output file /root/data/caddy/log/:8080/access.log {
roll_size 25MB
roll_keep 10
roll_keep_for 24h
}
}
}
|
输出内容示例:
1
|
192.168.2.98 - - [05/Apr/2024:15:07:34 +0000] "GET / HTTP/1.1" 200 3818 "http://192.168.2.31:8080/archives/hello-halo" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Mobile Safari/537.36"
|
这个功能需要插件实现,你可以通过add-package便捷安装,也可以使用xcaddy编译安装
1
|
./caddy add-package github.com/caddyserver/transform-encoder
|
1
2
|
xcaddy build \
--with github.com/caddyserver/transform-encoder
|
插件安装完毕后,在站点配置内添加日志配置即可
1
2
3
4
5
6
7
8
9
10
11
12
13
|
example.com {
reverse_proxy * 127.0.0.1:8080
log {
format transform `{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` {
time_format "02/Jan/2006:15:04:05 -0700"
}
output file /root/data/caddy/log/:8080/access.log {
roll_size 25MB
roll_keep 10
roll_keep_for 24h
}
}
}
|
可以参考common_log的配置格式对日志格式进行自定义,可以针对个人喜好和项目需要灵活配置
例如这个简化版本
1
2
3
|
format transform `{ts} {request>headers>X-Forwarded-For>[0]:request>remote_ip} {request>host} {request>method} {request>uri} {status}` {
time_format "02/Jan/2006:15:04:05"
}
|
输出内容示例:
1
|
23/Dec/2023:17:53:24 192.168.0.24 subdomain.domain.name GET /index 200
|