Caddy 配置打印日志到文件中

例子

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: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