Як використовувати команду реєстратора на Сьєррі?


11

Я намагаюся реєструвати події / контрольні точки з мого скрипту оболонки за допомогою logger.

Як користуватися loggerабо syslogутилітою в OS X (версія 10.12 (16A323)) . я намагався

logger "Hello world"і перевірено /var/log/system.logза допомогою програми Console, було створено запис журналу

Не вдалося зібрати рядки для двійкових файлів із назвою '–Xó ^ H'

Як користуватися loggerв OS X? Чи потрібно вказати щось, щоб створити / додати запис до системного журналу OS X?


Не могли б ви покращити своє запитання, зазначивши, чому ви хочете? Це може допомогти людям знайти варіанти для вас.
Харв

Мені вдалося зареєструвати запис: $ logger "Це запис у журналі" $ echo $? 0 Потім, коли я перевірив "Усі повідомлення" на консолі, з'явилося моє повідомлення.
Харв

1
Вихід із кодом статусу 1, вихід не має. Я спробував з lo gg er.
SG_

3
Я теж не вбачаю не Hello Worldв який - або /var/log/*.logфайл. Поведінка @SG_ бачить, відтворюється на моєму Mac, що працює під управлінням macOS 10.12. Крім того, logger -s 'Hello World'правильно друкує на консолі, але не в будь-який файл журналу на диску.
Грем Мілн

2
Не відображається в system.log для мене, але якщо я переглядаю "всі журнали" в консолі, він відображається там. Дивно!
Харв

Відповіді:


9

Тому що система реєстрації Apple змінилася в macOS sierra. Вони переходять від об'єкту Apple System Log до уніфікованого ведення журналу.

Ось посилання на документацію для розробників.

Наведені нижче фільтри нового уніфікованого журналу для тексту "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

=======

Якщо ви додасте --info, ви побачите і сам текст події у висновку.

У попередніх версіях ОС команда реєстратора надсилатиме до файлу /var/log/system.log, якщо пріоритет був досить високим (наприклад, використовуючи -p попередження), а також до бази даних syslog. У Sierra система system.log не записується, коли використовується реєстратор з -p попередженням - ні в 10.12.1 так чи інакше. Це може бути помилка.

Ви все ще можете використовувати реєстратор для надсилання до нього нової системи реєстрації, але для отримання результатів доведеться використовувати додаток Console або утиліту для запису кліпів або новий API.


1
Це майже лише посилання та відповідь "можливо". Простір не зрозуміє, що означають ваші команди. Будь ласка, додайте пояснення.
кланомат

1
Через чотири місяці зв’язок вже розірваний.
Джон Сміт

Я думаю, що поточне посилання є: developer.apple.com/reference/os/logging
ktappe

2

Я вирішив цю проблему, створивши скрипт, який використовує netcat для надсилання конкретних журналів кожні 10 хв від запуску. Відредагуйте за потребою.

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

Це не реальна відповідь, а обхід і занадто довго для коментарів.

Я зіткнувся з тією ж проблемою в Сієррі, намагаючись записати скрипт оболонки оновлення домашньої версії, включаючи команди реєстратора (який працював в El Capitan). Мені довелося відмовитися від реєстратора і просто використав ехо, переадресацію виводу та новий файл журналу:

#!/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
....
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.