Объедините журналы svlogd от различных runit сервисов

[

] С помощью [] GNU grep[] можно попробовать:[

] [
$ echo "<a href='magnet:?xt=something1:something1:somerandomcharacters'>link text</a>" | 
grep -oP "magnet.*(?=')"
magnet:?xt=something1:something1:somerandomcharacters
]
1
07.02.2015, 01:34
2 ответа

Используйте «Logger» в Syslog

, если вы довольны системным журналом, то используйте регистратор вместо SVLOGD . Вся точка наличия RunScript для вашего регистратора заключается в том, что вы можете запустить любую программу, которую вам нравится выполнять журнал.

/ etc / sv / test-1 / log / run

#!/bin/sh
exec logger -i -p daemon.notice -t my_service

.

Слияние при просмотре

Другая хорошая идея - просто позволить журналам переходить к отдельным местам, а затем использовать сценарий, который объединяет файлы вместе, когда вы просматриваете их. Например, с временными метками из SVLOGD Вы можете просто

cat /var/log/test/*/current | sort | less

Есть другие надежные инструменты, которые могут просматривать несколько файлов журнала одновременно, вроде MultiTail

1
27.01.2020, 23:37

Насколько я могу судить, svlogd не поддерживает объединение логов в один файл. Тем не менее, он поддерживает запись логов в сокет. Мое решение - поручить svlogd пересылать записи журнала через UDP в запущенный экземпляр rsyslog.

/etc/sv/test-1/log/run

#!/bin/sh
exec svlogd -tt /var/log/test/1

/var/log/test/1/config

ptest-1: 
U127.0.0.1

/etc/sv/test-2/log/run

#!/bin/sh
exec svlogd -tt /var/log/test/2

/var/log/test/2/config

ptest-2: 
U127.0.0.1

Оттуда просто нужно настроить rsyslog так, как вы хотите.

1
27.01.2020, 23:37

Теги

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