Страница справочника двусмысленно сформулирована:
-f file Log the specified file.
Существует один пример в странице справочника без дальнейшего объяснения:
logger -p local0.notice -t HOSTIDM -f /dev/idmc
POSIX не является никакой справкой:
Утилита регистратора сохраняет сообщение, неуказанным способом и форматом, содержа строковые операнды, обеспеченные пользователем. Сообщения, как ожидают, будут оценены позже персоналом, выполняющим задачи системного администрирования.
Я ожидал бы, что это зарегистрируется:
Однако, если я делаю следующее:
$ echo "contents" > testfile
$ logger -f ./testfile "test message"
$ cat testfile
contents
$ tail /var/log/messages
Aug 4 10:00:00 hostname logger: test message
Я не получаю ничего имеющего отношение "testfile" или его содержания, и при этом его содержание не изменяется. Если testfile
не существует, прежде чем я выйду logger
команда я получаю это сообщение об ошибке:
регистратор:./testfile: Никакой такой файл или каталог.
Что logger -f
предполагаемый сделать?
Документация GNU является немного более четкой и обеспечила подсказку для дальнейшего тестирования:
- f файл
- file=file
Зарегистрируйте содержание указанного файла. Если файл является ‘-’ стандартный вход, принят.
Оказывается, что определение сообщения переопределяет спецификацию файла.
Таким образом, это работает:
logger -f testfile
и регистрирует содержание файла к файлу журнала. Если файл состоит из нескольких строк, каждая строка становится отдельной записью в журнале.