Определить, должна ли программа вести журнал в systemd journal или stdout

Все, что вам нужно сделать, это преобразовать через NAT трафик, поступающий с частного IP-адреса контейнера на интерфейс хоста для общедоступного IP-адреса контейнера ($ publicIP2):

iptables -t nat -A POSTROUTING -s 10.204.119.5/32 -j SNAT --to-source $publicIP2
1
02.10.2016, 04:41
2 ответа

В systemd версии 231 для этой цели была введена переменная среды JOURNAL_STREAM . Ваша программа проверяет его значение, сравнивает его значение с устройством и номером i-узла своей стандартной ошибки и соответствующим образом изменяет свое поведение.

Когда не подключен к журналу, вы всегда можете (конечно) всегда использовать что-то вроде JSON, записанного (в виде одной строки на объект) для стандартной ошибки, чтобы там тоже были структурированные записи журнала. RFC 5424 также имеет (более ограниченные) параметры структурированных данных.

2
27.01.2020, 23:16

systemd уже элегантно обрабатывает этот случай для вас, как задокументировано в systemd.exec.

Вести журнал в STDOUT. При запуске через systemd, systemd будет по умолчанию перенаправлять STDOUT в журнал.

Другой вариант - journal+console, если вы всегда хотите вести журнал в обоих случаях.

Ведение журнала в STDOUT также является лучшей практикой в 12-факторном дизайне приложений.

4
27.01.2020, 23:16

Теги

Похожие вопросы