Caddy 配置打印日志到文件中 作者:马育民 • 2026-08-13 16:25 • 阅读:10001 # 例子 ``` 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请求完成后输出访问记录**,输出到文件 **提示:**官方不建议配置到全局中 ```caddyfile 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` #### 子参数 日志轮转,防止单个日志无限膨胀占满磁盘 ```caddyfile roll_size 50mb ``` 当日志文件大小达到 `100MB`,执行日志切割轮转。 当前 `access.log` 会被重命名归档,新建一个空白 `access.log` 继续写日志。 ```caddyfile roll_keep 10 ``` 最多保留**10个归档旧日志文件**。超过10个,最老的归档日志直接删除。 示例归档文件名:`access.2026-08-13-154500.log` ```caddyfile roll_local_time ``` > 归档日志文件名里的时间戳,使用**本地北京时间**; > 如果不写这个,归档文件名时间默认UTC,会差8小时。 > ⚠️重要区分: > - `time_local`:日志**内容内部的时间戳**用本地时区; > - `roll_local_time`:**切割出来的归档文件名上的时间戳**用本地时区;两者互不干涉,两个都要配。 ### 3. format console { ... } 日志输出格式:`console` 是人可读文本格式(不是json),适合直接打开阅读。 另外还有 `format json` 机器解析格式。 ```caddyfile time_local ``` 日志行内部打印的时间,使用操作系统本地时区(北京时间UTC+8)。 不写:默认UTC时间,日志时间差8小时。Caddy ≥2.6.2才支持。 ```caddyfile time_format wall_milli ``` 时间格式:`wall_milli` = `yyyy/mm/dd hh:mm: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方法、路径、状态码、请求耗时等。 原文出处:/show_1GW3r5mTRGKw.html