Come usare il comando logger su Sierra?


11

Sto cercando di registrare eventi / punti di controllo dal mio script di shell utilizzando logger.

Come utilizzare loggero syslogutilità in OS X (versione 10.12 (16A323)) . Ho provato

logger "Hello world"e verificato /var/log/system.logtramite l'app Console, la seguente è stata la voce di registro creata

Impossibile raccogliere le stringhe per il file binario denominato "–Xó ^ H"

Come usare loggerin OS X? C'è qualcosa da specificare per creare / aggiungere una voce al registro di sistema di OS X?


Potresti per favore migliorare la tua domanda menzionando il motivo per cui vuoi farlo? Ciò potrebbe aiutare le persone a trovare le opzioni per te.
Harv,

Sono stato in grado di registrare correttamente una voce: $ logger "Questa è una voce di registro" $ echo $? 0 Quindi quando ho controllato "Tutti i messaggi" nella mia console, il mio messaggio è apparso.
Harv,

1
Uscito con il codice di stato 1, nessun output. Ho provato con lo gg er.
SG_11

3
Anch'io vedo no Hello Worldin nessun /var/log/*.logfile. Il comportamento che sta vedendo @SG_ è riproducibile sul mio Mac con macOS 10.12. Inoltre, logger -s 'Hello World'stampa correttamente sulla console ma non su alcun file di registro su disco.
Graham Miln,

2
Non compare in system.log per me, ma se visualizzo "tutti i registri" nella console, viene visualizzato lì. Dispari!
Harv,

Risposte:


9

Perché il sistema di registrazione di Apple è cambiato in macOS sierra. Si stanno spostando dalla funzione Log di sistema di Apple alla registrazione unificata.

Ecco un link alla documentazione per gli sviluppatori.

Di seguito vengono filtrati il ​​nuovo registro unificato per il testo "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

=======

Se aggiungi --info vedrai il messaggio stesso dell'evento anche nell'output.

Nelle precedenti versioni del sistema operativo il comando logger avrebbe inviato al file /var/log/system.log se la priorità fosse abbastanza alta (ad es. Usando -p alert) e al database syslog. In Sierra il system.log non viene scritto quando il logger viene utilizzato con -p alert -not in 10.12.1 comunque. Questo potrebbe essere un bug.

È ancora possibile utilizzare il logger per inviare al nuovo sistema di registrazione, ma sarà necessario utilizzare l'app Console o l'utilità cli log o la nuova API per visualizzare i risultati.


1
Questa è quasi solo una risposta "link" e "forse". Un ~ laico non capirà cosa significano i tuoi comandi. Per favore, aggiungi qualche spiegazione.
klanomath,

1
Quattro mesi dopo, e il collegamento è già interrotto.
John Smith

Penso che il link attuale sia: developer.apple.com/reference/os/logging
ktappe,

2

Ho risolto questo problema disponendo di uno script che utilizza netcat per inviare registri specifici ogni 10 minuti da un launchdaemon. Modifica secondo necessità.

#!/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

Questa non è una vera risposta ma una soluzione alternativa e troppo lunga per un commento.

Ho riscontrato lo stesso problema in Sierra nel tentativo di registrare uno script della shell di aggiornamento homebrew che includesse i comandi del logger (che funzionava in El Capitan). Ho dovuto abbandonare il logger e ho semplicemente usato l'eco, il reindirizzamento dell'output e un nuovo file di registro:

#!/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
....
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.