Jak korzystać z polecenia logger w Sierra?


11

Próbuję rejestrować zdarzenia / punkty kontrolne z mojego skryptu powłoki za pomocą logger.

Jak używać loggerlub syslognarzędzia w OS X (wersja 10.12 (16A323)) . próbowałem

logger "Hello world"i sprawdzone /var/log/system.logza pomocą aplikacji Console, następujący wpis został utworzony

Nie udało się zebrać ciągów dla pliku binarnego o nazwie „–Xó ^ H”

Jak korzystać loggerz systemu OS X? Czy jest coś, co należy określić, aby utworzyć / dodać wpis do dziennika systemu OS X?


Czy możesz poprawić swoje pytanie, wspominając, dlaczego chcesz? To może pomóc ludziom znaleźć dla ciebie opcje.
Harv,

Udało mi się zalogować wpis: $ logger ”To jest wpis dziennika„ $ echo $? 0 Następnie, gdy zaznaczyłem „Wszystkie wiadomości” w mojej konsoli, moja wiadomość pojawiła się.
Harv,

1
Wyjście z kodem stanu 1, brak wyjścia. Próbowałem z lo gg er.
SG_

3
Ja też nie widzę żadnego Hello Worldw żadnym /var/log/*.logpliku. Zachowanie @SG_ jest widoczne, jest odtwarzalne na moim komputerze Mac z systemem macOS 10.12. Ponadto logger -s 'Hello World'poprawnie drukuje w konsoli, ale nie w żadnym pliku dziennika na dysku.
Graham Miln,

2
Nie pokazuje mi się w pliku system.log, ale jeśli wyświetlę „wszystkie dzienniki” w konsoli, to tam się pojawia. Dziwny!
Harv,

Odpowiedzi:


9

Ponieważ system logowania Apple zmienił się w macOS sierra. Przechodzą z narzędzia Apple System Log do zunifikowanego rejestrowania.

Oto link do dokumentacji dla programistów.

Poniżej filtruje nowy ujednolicony dziennik pod kątem tekstu „Message4me”

$logger -is -t LogTest "Message4Me" 
Oct 15 13:19:27  LogTest[51173] <Notice>: Message4Me

$log show --predicate 'eventMessage contains "Message4Me"' --last 3m

Skipping info and debug messages, pass --info and/or --debug to include.
Filtering the log data using "eventMessage CONTAINS "Message4Me""
Timestamp                       Thread     Type        Activity             PID    
2016-10-15 13:19:27.666574+0900 0x33b62c   Default     0x0                  51173  logger: Message4Me
 --------------------------------------------------------------------------------------------------------------------
Log      - Default:          1, Info:                0, Debug:             0, Error:          0, Fault:          0

=======

Jeśli dodasz --info, zobaczysz również komunikat o zdarzeniu na wyjściu.

W poprzednich wersjach systemu operacyjnego komenda logger wysyłała do pliku /var/log/system.log, jeśli priorytet był wystarczająco wysoki (np. Za pomocą alertu -p), a także do bazy danych syslog. W Sierra system.log nie jest zapisywany, gdy logger jest używany z -p alert -not w 10.12.1. To może być błąd.

Nadal możesz używać programu rejestrującego do wysyłania do nowego systemu rejestrowania, ale będziesz musiał użyć aplikacji Console lub narzędzia do logowania cli lub nowego interfejsu API, aby zobaczyć wyniki.


1
To prawie tylko link i odpowiedź „być może”. Laik nie zrozumie, co oznaczają twoje polecenia. Dodaj wyjaśnienie.
klanomath

1
Cztery miesiące później link już się zepsuł.
John Smith

Myślę, że aktualny link to: developer.apple.com/reference/os/logging
ktappe

2

Rozwiązałem ten problem, używając skryptu, który używa netcata do wysyłania określonych dzienników co 10 minut od Laundaemona. Edytuj w razie potrzeby.

#!/bin/bash

while read line    
do
    #drop log entries in the log file you don't want to sent to syslog server
   if [[ "$line" =~ ^.*recurring\ check-in.* || "$line" =~ ^.*Executing\ Policy\ Update\ Inventory.* ]]; then
     /bin/echo "" > /dev/null;
   else
     ## send logs to syslog server using netcat. Edit IP and UDP port as necessary
     echo $line | nc -v -u -w 0 10.10.1.9 514
   fi
done < /var/log/system.log

1

To nie jest prawdziwa odpowiedź, ale obejście tego problemu i zbyt długie, aby komentować.

Ten sam problem napotkałem w Sierra, próbując zarejestrować skrypt powłoki homebrew, w tym polecenia rejestratora (które działały w El Capitan). Musiałem zrezygnować z rejestratora i po prostu użyłem echa, przekierowania wyjścia i nowego pliku dziennika:

#!/bin/bash

Brew=/usr/local/bin/brew
Brewup_Log=/Users/user/Library/Logs/brewup.log

echo "$(date "+%Y.%m.%d %H:%M:%S")" >> $Brewup_Log 2>&1
$Brew update 2>&1 >>$Brewup_Log
....
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.