Skip to content

Traefik 日志与访问日志

日志(Logs)

日志涉及 Traefik 本身发生的一切(启动、配置、事件、关闭等)。

配置示例

要在 Traefik Proxy 中启用和配置日志,你可以使用静态配置文件,或者使用 Helm chart 时使用 Helm values。

YAML 格式:

yaml
log:
  filePath: "/path/to/log-file.log"
  format: json
  level: INFO

TOML 格式:

toml
[log]
  filePath = "/path/to/log-file.log"
  format = "json"
  level = "INFO"

Helm Chart Values:

yaml
logs:
  general:
    filePath: "/path/to/log-file.log"
    format: json
    level: INFO

配置选项

字段描述默认值
log.level日志级别(DEBUGINFOWARNERRORFATALPANIC)。ERROR
log.filePath日志文件路径。""(stdout)
log.format日志格式(commonjsonlogfmt)。common
log.noColor禁用 ANSI 颜色代码。false
log.syslogsyslog 配置。-
log.fields附加到每条日志的字段。-
log.maxSize日志文件最大大小(轮转前)。0
log.maxBackups保留的旧日志文件数。0
log.maxAge旧日志文件最大保留天数。0
log.compress压缩轮转的旧日志文件。false

访问日志(Access Logs)

访问日志涉及 Traefik 处理的请求所发生的一切。

YAML 格式:

yaml
accesslog:
  filePath: "/path/to/access.log"
  format: json
  bufferingSize: 100
  filters:
    statusCodes:
      - "200"
      - "300-302"
    retryAttempts: true
    minDuration: "10ms"
  fields:
    defaultMode: keep
    names:
      RequestHost: drop
      RequestMethod: keep
      RequestPath: keep

Helm Chart Values:

yaml
logs:
  access:
    enabled: true
    filePath: "/path/to/access.log"
    format: json

配置选项

字段描述默认值
accesslog.enabled启用访问日志。true
accesslog.filePath访问日志文件路径。""(stdout)
accesslog.format日志格式(commonjsonlogfmt)。common
accesslog.bufferingSize缓冲区大小(行数)。0
accesslog.filters.statusCodes包含的状态码列表。[]
accesslog.filters.retryAttempts包含重试尝试。false
accesslog.filters.minDuration包含的最短持续时间。0
accesslog.fields.defaultMode字段的默认模式(keepdropredirect)。keep
accesslog.fields.names字段名到模式的映射。-
accesslog.fields.headers.defaultMode请求/响应头的默认模式。drop
accesslog.fields.headers.names头到模式的映射。-

访问日志字段

请求字段

  • RequestMethodRequestPathRequestHost
  • RequestSchemeRequestUserAgentRequestReferer
  • RequestProtocolRequestLineRequestContentType
  • RequestContentLengthRequestAcceptRequestCount

响应字段

  • ResponseStatusResponseCodeResponseContentType
  • ResponseContentLengthResponseDurationResponseCount

客户端字段

  • ClientHostClientPortClientUsername
  • ClientAddr

代理字段

  • RouterNameServiceNameServiceURL
  • BackendNameBackendURLBackendAddress
  • EntryPointNameTLSVersionTLSCipher

适用场景

  • 生产环境监控:将访问日志发送到 ELK、Loki 等日志聚合系统
  • 审计:记录所有访问以便审计
  • 调试:启用 DEBUG 级别获取详细日志
  • 性能分析:通过访问日志分析慢请求
  • 安全分析:检测异常访问模式

最佳实践

  1. 使用 JSON 格式:便于日志聚合系统解析
  2. 配置过滤:过滤掉不需要的请求(如健康检查)
  3. 重定向敏感头:使用 redirect 模式重定向头到另一字段
  4. 启用缓冲:使用 bufferingSize 减少 I/O
  5. 配置轮转:防止日志文件无限增长
  6. 使用全局访问日志:将访问日志输出到 stdout,由容器平台(如 Docker、Kubernetes)收集

在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布