Журнал
Блок log настраивает два потока журналов Xray (access и error), а также, по желанию, журналирование DNS-запросов и маскирование IP.
Параметры
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
access | string | console | <file path> | none | Куда писать журнал доступа. Пустое значение (или его отсутствие) — вывод в консоль; "none" отключает журнал доступа; любое другое значение трактуется как путь к файлу. |
error | string | console | <file path> | none | Куда писать журнал ошибок. Семантика та же, что у access: пусто = консоль, "none" = выключено, всё остальное = путь к файлу. |
loglevel | string | warning | debug | info | warning | error | none | Минимальный уровень серьёзности для журнала ошибок. Значение "none" дополнительно принудительно отключает журнал доступа. |
dnsLog | bool | false | true | false | Если true, каждый DNS-запрос, который разрешает движок маршрутизации, записывается в журнал доступа. |
maskAddress | string | (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.7.28 (5ca6f4b)
Примеры
Вывод в консоль на уровне 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"
}
}Примечания
- Поля
accessиerrorиспользуют одну и ту же логику «none / пусто / путь» вLogConfig.Build(infra/conf/log.go:36-47); значение"none"— документированный выключатель, а любая другая непустая строка трактуется как путь к файлу, а не как ключевое слово уровня. loglevel: "none"— особый случай: он не только заглушает поток ошибок, но и принудительно отключает оба потока (infra/conf/log.go:57-59).maskAddressне проверяется по перечислению на этапе разбора конфигурации. Неизвестные значения попадают в парсер пользовательских пар масок вapp/log/log.go:177-193; ошибка разбора там всплывает как отказ при запуске.
Исходный код: infra/conf/log.go:18-24 · v26.7.28 (5ca6f4b)
