例子
www.xxx.com {
# tls internal
tls 123456@email.com
# 配置日志
log {
output file .\logs\www.xxx.com.access.log {
roll_size 100mb
roll_keep 10
roll_local_time
}
format console {
time_local
time_format wall_milli
}
}
# 反向代理
reverse_proxy 127.0.0.1:3000 {
# 略
}
}
解释
站点内 log{}:每一次HTTP请求完成后输出访问记录,输出到文件
提示:官方不建议配置到全局中
log {
output file C:\caddy\logs\access.log {
roll_size 100mb
roll_keep 10
roll_local_time
}
format console {
time_local
time_format wall_milli
}
}
1. log { }
开启该站点的HTTP访问日志。不写这一块,就 不会产生任何请求访问日志。
2. output file C:\caddy\logs\access.log{ … }
指定日志输出目的地:写入磁盘文件,不是控制台。
绝对路径: C:\caddy\logs\access.log
相对路径:.\logs\access.log
子参数
日志轮转,防止单个日志无限膨胀占满磁盘
roll_size 50mb
当日志文件大小达到 100MB,执行日志切割轮转。
当前 access.log 会被重命名归档,新建一个空白 access.log 继续写日志。
roll_keep 10
最多保留10个归档旧日志文件。超过10个,最老的归档日志直接删除。
示例归档文件名:access.2026-08-13-154500.log
roll_local_time
归档日志文件名里的时间戳,使用本地北京时间;
如果不写这个,归档文件名时间默认UTC,会差8小时。⚠️重要区分:
time_local:日志内容内部的时间戳用本地时区;roll_local_time:切割出来的归档文件名上的时间戳用本地时区;两者互不干涉,两个都要配。
3. format console { … }
日志输出格式:console 是人可读文本格式(不是json),适合直接打开阅读。
另外还有 format json 机器解析格式。
time_local
日志行内部打印的时间,使用操作系统本地时区(北京时间UTC+8)。
不写:默认UTC时间,日志时间差8小时。Caddy ≥2.6.2才支持。
time_format wall_milli
时间格式:wall_milli = yyyy/mm/dd hh,带毫秒。
ss.fff
示例输出:2026/08/13 16:20:35.123
其他可选格式:wall(不带毫秒)、rfc3339。
输出日志样例
2026/08/13 16:22:10.456 INFO http.log.access handle_request {"request":{"remote_ip":"113.xx.xx.xx","remote_port":54321,"proto":"HTTP/2.0","method":"GET","host":"www.xxx.top","uri":"/","headers":{...}},"status":200,"duration":0.08}
包含:访问时间、客户端IP、http方法、路径、状态码、请求耗时等。