¿Cómo usar el comando logger en Sierra?

11

Estoy tratando de registrar eventos / puntos de control desde mi script de shell usando logger.

Cómo usar loggero syslogutilidad en OS X (versión 10.12 (16A323)) . Yo he tratado

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

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

¿Cómo usar loggeren OS X? ¿Hay algo que se especifique para crear / agregar una entrada al registro del sistema OS X?

SG_
fuente
¿Podrías mejorar tu pregunta mencionando por qué quieres? Eso podría ayudar a las personas a encontrar opciones para usted.
Harv
Pude registrar con éxito una entrada: $ logger "Esta es una entrada de registro" $ echo $? 0 Luego, cuando marqué "Todos los mensajes" en mi consola, apareció mi mensaje.
Harv
1
Salido con el código de estado 1, sin salida. Lo intenté con logg er.
SG_
3
Yo también veo no Hello Worlden ningún /var/log/*.logarchivo. El comportamiento que está viendo @SG_ es reproducible en mi Mac con macOS 10.12. Además, logger -s 'Hello World'se imprime correctamente en la consola pero no en ningún archivo de registro en el disco.
Graham Miln
2
No aparece en system.log para mí, pero si veo "todos los registros" en la consola, aparece allí. ¡Impar!
Harv

Respuestas:

9

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

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

A continuación, se 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 logger se enviaría al archivo /var/log/system.log si la prioridad era lo suficientemente alta (por ejemplo, usando la alerta -p), así como a la base de datos syslog. En Sierra, no se escribe en system.log cuando el registrador se usa con -p alert -not en 10.12.1 de todos modos. Esto podría ser un error.

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

japonés
fuente
1
Esta es casi una respuesta de solo enlace y "tal vez". Un laico no entenderá lo que significan tus comandos. Por favor agregue alguna explicación.
klanomath
1
Cuatro meses después, y el enlace ya está roto.
John Smith
Creo que el enlace actual es: developer.apple.com/reference/os/logging
ktappe
2

Resolví este problema teniendo un script que usa netcat para enviar registros específicos cada 10 minutos desde un launchdaemon. Edite 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
Jeff Holland
fuente
1

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

Enfrenté el mismo problema en Sierra al intentar registrar un script de shell de actualización homebrew que incluye comandos de registro (que funcionaba en El Capitan). Tuve que abandonar el registrador 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
....
klanomath
fuente