LOGGER(1) Polecenia użytkownika LOGGER(1)

logger - umieszcza komunikaty w dzienniku systemowym

logger [opcje] komunikat

logger tworzy wpisy w dzienniku (logu) systemowym

Gdy obecny jest opcjonalny argument komunikat, jest on zapisywany do dziennika. Jeśli argument jest nieobecny i nie podano opcji -f, do dziennika trafi standardowe wejście.

-d, --udp

Używa tylko datagramów (UDP). Domyślnie, próba połączenia nastąpi z portem syslog zdefiniowanym w /etc/services, którym często jest port 514.

Zob. też opcje --server i --socket, służące do zdefiniowania miejsca połączenia.

-e, --skip-empty

Ignoruje puste wiersze przy przetwarzaniu plików. Pusty wiersz jest definiowany jako wiersz bez żadnych znaków. Z tego powodu, wiersz zawierający białe znaki NIE jest uważany za pusty. Proszę zauważyć, że gdy podano opcję --prio-prefix, priorytet nie stanowi części wiersza. W tym trybie, pusty wiersz będzie zatem wierszem, który nie zawiera żadnych znaków po przedrostku określającym priorytet (np. <13>).

-f, --file plik

Zapisuje do dziennika zawartość podanego pliku. Opcji nie można łączyć z komunikatem z wiersza poleceń.

-i

Rejestruje identyfikator procesu logger w każdym wierszu.

--id[=id]

Rejestruje identyfikator procesu logger w każdym wierszu. Gdy poda się opcjonalny argument id, jest on używany zamiast identyfikatora procesu polecenia logger. Korzystanie z --id=$$ (PPID) jest zalecane w skryptach, które wysyłają wiele komunikatów.

Proszę zauważyć, że infrastruktura dziennika systemowego (np. systemd, gdy nasłuchuje na /dev/log) może korzystać z poświadczeń lokalnego gniazda, nadpisując identyfikator procesu podany w komunikacie. logger(1) może ustawić te poświadczenia gniazda na podany id, ale wyłącznie gdy posiada się uprawnienia roota i proces o podanym identyfikatorze istnieje; w innym przypadku poświadczenia gniazda nie są modyfikowane, a problem jest po cichu ignorowany.

--journald[=plik]

Tworzy wpis dziennika systemd. Wpis jest odczytywany z podanego pliku, o ile zostanie podany, albo ze standardowego wejścia. Każdy wiersz musi zaczynać się od pola akceptowanego przez journald; więcej szczegółów w podręczniku systemd.journal-fields(7). Dobrym pomysłem jest zwykle korzystanie z MESSAGE_ID, bowiem ułatwia to odnajdywanie wpisów. Przykłady:
logger --journald <<koniec
MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309
MESSAGE=Psy szczekają, karawana idzie dalej.
PSY=szczekają
KARAWANA=idzie dalej
koniec
logger --journald=wpis.txt

Proszę zauważyć, że --journald zignoruje wartości innych opcji, takie jak priorytet. Jeśli priorytet jest potrzebny, należy go umieścić w wejściu, korzystając z pola PRIORITY. Wykonanie jedynie journalctl(1) wyświetli pole MESSAGE. Polecenie journalctl --output json-pretty pokaże pozostałe pola.

Aby wprowadzić nowe wiersze w MESSAGE, należy podać MESSAGE kilka razy. Jest to obsługiwane jako specjalny przypadek, inne pola będą przechowywane w dzienniku jako tablica, jeśli pojawią się wielokrotnie.

--msgid msgid

Ustawia pole RFC 5424 https://tools.ietf.org/html/rfc5424. Proszę zauważyć, że wewnątrz msgid znak spacji jest niedozwolony. Opcja jest używana tylko, gdy podano równocześnie --rfc5424; w innym przypadku jest po cichu ignorowana.

-n, --server serwer

Zapisuje do podanego zdalnego serwera syslog, zamiast do gniazda dziennika systemowego. O ile nie podano --udp lub --tcp, logger spróbuje użyć najpierw UDP, ale jeśli to zawiedzie, nastąpi próba połączenia TCP.

--no-act

Powoduje, że zostanie wykonane wszystko, poza samym zapisem do dziennika oraz usunięciem połączenia z dziennikiem. Opcję można łączyć z --stderr w celach testowych.

--octet-count

Korzysta z tworzenia ramek metodą liczenia oktetów RFC 6587 https://tools.ietf.org/html/rfc6587 do wysyłania komunikatów. Gdy nie korzysta się z tej opcji, domyślnie w przypadku UDP nie są tworzone ramki, a w przypadku TCP używane jest opisane w RFC6587 nieprzezroczyste tworzenie ramek (non-transparent framing lub inaczej octet stuffing).

-P, --port port

Korzysta z podanego portu. Gdy nie poda się tej opcji, portem jest domyślnie syslog w przypadku połączeń udp oraz syslog-conn w przypadku tcp.

-p, --priority priorytet

Zapisuje komunikat z zadanym priorytetem. Priorytet może być określony liczbowo lub jako para zagadnienie._poziom ("facility.level"). Na przykład, -p local3.info rejestruje komunikat jako o poziomie istotności informacyjnym dotyczącym zagadnienia local3. Domyślnym priorytetem jest user.notice.

--prio-prefix

Szuka przedrostka syslog w każdym wierszu odczytywanym ze standardowego wejścia. Przedrostek jest liczbą dziesiątkową, umieszczoną w nawiasach ostrych, która koduje zagadnienie i poziom. Liczba jest tworzona przez pomnożenie zagadnienia przez 8 i dodanie do tego iloczynu poziomu. Przykładowo local0.info, oznaczające zagadnienie=16 i poziom=6, staje się <134>.

Jeśli przedrostek nie zawiera zagadnienia, zagadnieniem domyślnie będzie to, co podano opcją -p. Podobnie, jeśli nie podano przedrostka, wiersza jest zapisywany do dziennika z priorytetem podanym opcją -p.

Opcja nie wpływa na komunikat podany w wierszu polecenia.

--rfc3164

Korzysta z protokołu syslog BSD RFC 3164 https://tools.ietf.org/html/rfc3164, w celu przesłania komunikatów na zdalny serwer.

--rfc5424[=bez]

Korzysta z protokołu syslog RFC 5424 https://tools.ietf.org/html/rfc5424, w celu przesłania komunikatów na zdalny serwer. Opcjonalny argument bez może być listą następujących wartości: notq, notime, nohost, rozdzielonych przecinkami.

Wartość notq wyłącza ustrukturyzowane dane o jakości czasu (time-quality) z zamieszczanych komunikatów. Informacje o jakości czasu pokazują, czy lokalny zegar był zsynchronizowany wraz z maksymalną liczbą mikrosekund, o jaką znacznik czasu może być odchylony. Jakość czasu jest również automatycznie wyłączana, gdy poda się --sd-id timeQuality.

Wartość notime (która wymusza notq) wyłącza pełny znacznik czasu wysyłającego w formacie ISO-8601, w tym mikrosekundy i strefę czasową.

Wartość nohost wyłącza informację gethostname(2) z nagłówka komunikatu.

Protokół RFC 5424 jest domyślny dla programu logger od wersji 2.26.

-s, --stderr

Oprócz zapisu komunikatu do dziennika systemowego wysyła go na standardowe wyjście błędów.

--sd-id nazwa[@cyfry]

Określa identyfikator elementu ustrukturyzowanych danych dla nagłówka komunikatu RFC 5424. Aby wprowadzić nowy element, opcję trzeba podać przed --sd-param. Liczba elementów ustrukturyzowanych danych jest nieograniczona. Identyfikator (nazwa oraz ewentualnie @cyfry) jest wrażliwa na wielkość znaków i unikalnie identyfikuje typ i zastosowanie elementu. Ten sam identyfikator nie może wystąpić więcej niż raz w komunikacie. Część @cyfry jest wymagana dla niestandaryzowanych identyfikatorów zdefiniowanych przez użytkownika.

logger obecnie tworzy jedynie standaryzowany element timeQuality. RFC 5424 opisuje również elementy origin (z parametrami ip, enterpriseId, software i swVersion) oraz meta (z parametrami sequenceId, sysUpTime i language). Te identyfikatory elementów można podać bez przyrostka @cyfry.

--sd-param nazwa=wartość

Określa parametr ustrukturyzowanego elementu danych, w postaci pary nazwy i wartości. Opcję należy podać po --sd-id i można to zrobić wielokrotnie dla tego samego elementu. Proszę zauważyć, że wartość musi być otoczona cudzysłowami, które należy zacytować w wierszu polecenia.
    logger --rfc5424 --sd-id zoo@123             \
                     --sd-param tygrys="głodny"   \
                     --sd-param zebra="biega"  \
                     --sd-id szef@123         \
                     --sd-param naSpotkaniu="tak"  \
                     "oto komunikat"

daje:

<13>1 2015-10-01T14:07:59.168662+02:00 ws kzak - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="218616"][zoo@123 tygrys="głodny" zebra="biega"][szef@123 naSpotkaniu="tak"] oto komunikat

-S, --size rozmiar

Ustawia maksymalny dopuszczalny rozmiar komunikatu na rozmiar. Domyślnie jest to 1KiB znaków, co jest limitem tradycyjnym i podanym w RFC 3164. Wraz z RFC 5424 limit stał się elastyczny. Dobrym założeniem jest, że przyjmujący zgodni z RFC 5424 mogą przetworzyć komunikaty o wielkości co najmniej 4KiB.

Większość przyjmujących akceptuje komunikaty większe niż 1KiB poprzez dowolny protokół syslog. Z tego powodu opcja --size ma wpływ na program logger we wszystkich przypadkach (nie tylko, gdy użyto --rfc5424).

Uwaga: limit wielkości komunikatu dotyczy całego komunikatu, łącznie z nagłówkiem syslog. Rozmiar nagłówka zależy od wybranych opcji i długości nazwy stacji. W praktyce, nagłówki zwykle nie są dłuższe niż 50 do 80 znaków. Przy wyborze maksymalnego rozmiaru komunikatu należy upewnić się, że otrzymujący go obsługuje, w innym przypadku komunikaty mogą zostać przycięte. Ponownie, w praktyce rozmiary komunikatów od dwóch do czterech KiB powinny być zwykle w porządku, natomiast obsługę większych należy zweryfikować.

--socket-errors tryb

Wypisuje błędy o połączeniach gniazd uniksowych. Trybem może być jedna z wartości: on, off lub auto. Jeśli trybem jest auto (tak jest domyślnie), to logger wykryje czy procesem init jest systemd(1) i jeśli tak jest przyjmie, że /dev/log można użyć we wczesnej fazie rozruchu. Brak /dev/log w innych systemach init nie spowoduje błędów, podobnie jak używanie wywołania systemowego openlog(3). Program logger(1) przed wersją 2.26 używał openlog(3), zatem nie był w stanie wykryć utraty komunikatów wysłanych do gniazd uniksowych.

Gdy wypisywanie błędów jest wyłączone, utracone komunikaty nie są komunikowane i spowodują pomyślny status zakończenia programu logger(1).

-T, --tcp

Używa wyłącznie strumienia (TCP). Domyślnie, próba połączenia ma miejsce na porcie syslog-conn zdefiniowanym w pliku /etc/services, który często wynosi 601.

Zob. też opcje --server i --socket, służące do zdefiniowania miejsca połączenia.

-t, --tag znacznik

Oznacza każdy zapisywany do dziennika wiersz, podanym znacznikiem. Domyślnym znacznikiem jest nazwa użytkownika zalogowanego na terminalu (lub nazwa użytkownika oparta na efektywnym identyfikatorze użytkownika).

-u, --socket gniazdo

Zapisuje do podanego gniazda zamiast do systemowego gniazda dziennika.

--

Kończy listę argumentów. Pozwala to rozpocząć komunikat minusem (-).

-h, --help

Wyświetla ten tekst i wychodzi.

-V, --version

Wyświetla wersję i wychodzi.

Narzędzie logger wychodzi z 0 przy powodzeniu i z >0 jeśli wystąpił błąd.

Prawidłowe nazwy zagadnień to:

auth
authpriv do wrażliwych informacji związanych z bezpieczeństwem
cron

daemon
ftp
kern nie można wygenerować z przestrzeni użytkownika; automatycznie konwertowane do*user*

lpr
mail
news
syslog
user
uucp
local0
do
local7
security przestarzały synonim auth

Prawidłowe nazwy poziomów to:

emerg
alert
crit
err
warning
notice
info
debug
panic przestarzały synonim emerg
error przestarzały synonim err
warn przestarzały synonim warning

Kolejność priorytetów oraz zamierzone zastosowania podanych zagadnień i poziomów opisano w podręczniku syslog(3).

Polecenie logger powinno być zgodne z IEEE Std 1003.2 ("POSIX.2").

logger System się przeładował

logger -p local0.notice -t HOSTIDM -f /dev/idmc

logger -n loghost.example.com System się przeładował

Polecenie logger pierwotnie napisano na Uniwersytecie Kalifornijskim w latach 1983-1993, a później zostało przepisane przez: Karela Zaka <kzak@redhat.com>, Rainera Gerhardsa <rgerhards@adiscon.com> oraz Samiego Kerolę <kerolasa@iki.fi>.

journalctl(1), syslog(3), systemd.journal-fields(7)

Problemy należy zgłaszać w systemie śledzenia błędów https://github.com/util-linux/util-linux/issues.

Polecenie logger jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux https://www.kernel.org/pub/linux/utils/util-linux/.

2025-03-29 util-linux 2.41