Skip to content

日志

log 块用于配置 Xray 的两条日志流(access 与 error),并可选地启用 DNS 查询日志与 IP 脱敏。

选项

字段类型默认值允许值描述
accessstringconsole<file path> | none访问日志的输出位置。留空(或不设置)写入控制台;"none" 关闭访问日志;其他取值一律视为文件路径。
errorstringconsole<file path> | none错误日志的输出位置。语义与 access 相同:留空 = 控制台,"none" = 关闭,其他 = 文件路径。
loglevelstringwarningdebug | info | warning | error | none错误日志的最低严重级别。取值 "none" 会同时强制关闭访问日志。
dnsLogboolfalsetrue | false为 true 时,路由引擎解析的每一次 DNS 查询都会写入访问日志。
maskAddressstring(off)full | half | quarter | /v4mask+/v6mask对日志中的客户端 / 目的 IP 进行脱敏。"full" = /0+/0,"half" = /16+/32,"quarter" = /8+/16;也可显式给出形如 "/16+/64" 的掩码对。

源码: infra/conf/log.go:18-24 · 锚定版本 v26.6.1 (94ffd50)

示例

默认 warning 级别下的控制台输出:

json
{
  "log": {
    "loglevel": "warning"
  }
}

把两条流分别写入文件,记录每一次 DNS 查询,并把 IP 脱敏到 /16+/32:

json
{
  "log": {
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log",
    "loglevel": "info",
    "dnsLog": true,
    "maskAddress": "half"
  }
}

完全关闭日志:

json
{
  "log": {
    "loglevel": "none"
  }
}

说明

  • accesserrorLogConfig.Buildinfra/conf/log.go:36-47)中共享同一段 "none / empty / path" 判定;"none" 是文档化的关闭开关 —— 其他任何非空字符串都会被当作 文件路径,不会 被解释为级别关键字。
  • loglevel: "none" 是特例:它在静默错误流之外,还会强制把 两条 流一并关闭(infra/conf/log.go:57-59)。
  • maskAddress 在配置解析阶段不做枚举校验。未知取值会进入 app/log/log.go:177-193 中的自定义掩码对解析器;那里若失败,会作为 启动错误抛出。

源码: infra/conf/log.go:18-24 · v26.6.1 (94ffd50)

由 Argsment 出品的 Core Tutorial