Come usare il comando logger su Sierra?

10

Sto tentando di registrare eventi / check-point dal mio script di shell usando logger .

Come utilizzare l'utilità logger o syslog in OS X (versione 10.12 (16A323)) . Ho provato

logger "Hello world" e controllato /var/log/system.log utilizzando l'app Console, di seguito è stata creata la voce di registro

Failed to harvest strings for binary named '–Xó^H'

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

    
posta SG_ 11.10.2016 - 07:28
fonte

3 risposte

8

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

Ecco un link alla documentazione per gli sviluppatori.

Il seguente filtra il nuovo log 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 nell'output.

Nelle precedenti versioni del sistema operativo il comando del logger veniva inviato al file /var/log/system.log se la priorità era sufficientemente alta (ad esempio usando -p alert) e al database syslog. In Sierra il system.log non viene scritto quando il logger viene usato con -p alert -not comunque in 10.12.1. Questo potrebbe essere un bug.

Puoi comunque utilizzare il logger per inviare al nuovo sistema di registrazione, ma per visualizzare i risultati dovrai utilizzare l'app Console o l'utilità clilog o la nuova API.

    
risposta data 15.10.2016 - 06:28
fonte
1

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

Ho affrontato lo stesso problema in Sierra cercando di registrare uno script di shell di aggiornamento homebrew compresi i comandi logger (che funzionavano in El Capitan). Ho dovuto abbandonare logger e ho semplicemente usato echo, redirezione 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
....
    
risposta data 11.10.2016 - 09:46
fonte
1

Ho risolto questo problema avendo uno script che utilizza netcat per inviare log 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
    
risposta data 30.11.2016 - 22:31
fonte

Leggi altre domande sui tag