¿Cómo usar el comando logger en Sierra?

10

Estoy intentando registrar eventos / puntos de control de mi shell-script usando logger .

Cómo utilizar la utilidad logger o syslog en OS X (versión 10.12 (16A323)) . Lo he intentado

logger "Hello world" y verificó /var/log/system.log usando la aplicación de la Consola, la siguiente fue la entrada de registro creada

  

Error al recopilar cadenas para el binario llamado '–Xó ^ H'

¿Cómo usar logger en OS X? ¿Se debe especificar algo para crear / agregar una entrada al registro del sistema OS X?

    
pregunta SG_ 11.10.2016 - 07:28

3 respuestas

7

Porque el sistema de registro de Apple cambió en macOS sierra. Se están moviendo desde la función de registro del sistema Apple al registro unificado.

Aquí hay un enlace a la documentación del desarrollador.

Lo siguiente filtra el nuevo registro unificado para el texto "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

=======

Si agrega --info, también verá el mensaje del evento en la salida.

En las versiones anteriores del sistema operativo, el comando del registrador se enviaría al archivo /var/log/system.log si la prioridad fuera lo suficientemente alta (por ejemplo, usando la alerta -p), así como a la base de datos de syslog. En Sierra, el sistema.log no se escribe cuando el registrador se usa con -p alerta -no en 10.12.1 de todos modos. Esto podría ser un error.

Aún puede usar el registrador para enviarlo al nuevo sistema de registro, pero tendrá que usar la aplicación de la Consola o la utilidad de registro de cli o la nueva API para ver los resultados.

    
respondido por el Japanese 15.10.2016 - 06:28
1

Esta no es una respuesta real, sino una solución alternativa y demasiado larga para un comentario.

Me encontré con el mismo problema en Sierra al intentar registrar un script de shell de actualización homebrew que incluye comandos logger (que funcionaron en El Capitán). Tuve que abandonar logger y simplemente usé echo, redirección de salida y un nuevo archivo de 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
....
    
respondido por el klanomath 11.10.2016 - 09:46
1

Resolví este problema al tener un script que usa netcat para enviar registros específicos cada 10 minutos desde un launchdaemon. Editar según sea necesario.

#!/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
    
respondido por el Jeff Holland 30.11.2016 - 22:31

Lea otras preguntas en las etiquetas