Bagaimana cara menggunakan perintah logger di Sierra?

11

Saya mencoba mencatat peristiwa / check-point dari shell-script saya menggunakan logger.

Cara menggunakan loggeratau syslogutilitas dalam OS X (versi 10.12 (16A323)) . saya telah mencoba

logger "Hello world"dan diperiksa /var/log/system.logmenggunakan aplikasi Konsol, berikut ini adalah entri log yang dibuat

Gagal memanen string untuk biner bernama '–Xó ^ H'

Bagaimana cara menggunakan loggerOS X? Apakah ada sesuatu yang ditentukan untuk membuat / menambahkan entri ke log sistem OS X?

SG_
sumber
Bisakah Anda meningkatkan pertanyaan Anda dengan menyebutkan mengapa Anda mau? Itu mungkin membantu orang menemukan opsi untuk Anda.
Harv
Saya berhasil mencatat entri: $ logger "Ini adalah entri log" $ echo $? 0 Kemudian ketika saya memeriksa "Semua pesan" di Konsol saya, pesan saya muncul.
Harv
1
Keluar dengan kode status 1, tanpa output. Saya mencoba dengan lo gg er.
SG_
3
Saya juga melihat tidak Hello Worlddalam /var/log/*.logfile apa pun . Perilaku @SG_ melihat, dapat direproduksi pada Mac saya yang menjalankan macOS 10.12. Selain itu, logger -s 'Hello World'tidak mencetak dengan benar ke konsol tetapi tidak ke file log pada disk.
Graham Miln
2
Tidak muncul di system.log untuk saya, tetapi jika saya melihat "semua log" di konsol, itu muncul di sana. Aneh!
Harv

Jawaban:

9

Karena sistem logging Apple berubah dalam macOS sierra. Mereka pindah dari fasilitas Log Sistem Apple ke logging bersatu.

Berikut tautan ke dokumentasi pengembang.

Berikut ini filter log terpadu baru untuk teks "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

=======

Jika Anda menambahkan - info Anda akan melihat pesan acara itu sendiri di output juga.

Pada versi OS sebelumnya, perintah logger akan mengirim ke file /var/log/system.log jika prioritasnya cukup tinggi (misalnya menggunakan tanda -p) serta ke database syslog. Di Sierra system.log tidak ditulis ketika logger digunakan dengan -p peringatan -tidak di 10.12.1. Ini bisa jadi bug.

Anda masih dapat menggunakan logger untuk mengirim ke sistem logging baru, tetapi harus menggunakan aplikasi Konsol atau utilitas log log atau API baru untuk melihat hasilnya.

Jepang
sumber
1
Ini hampir merupakan satu-satunya tautan dan jawaban "mungkin". A ~ awam tidak akan mengerti apa arti perintah Anda. Silakan tambahkan beberapa penjelasan.
klanomath
1
Empat bulan kemudian, dan tautannya sudah putus.
John Smith
Saya pikir tautan saat ini adalah: developer.apple.com/reference/os/logging
ktappe
2

Saya memecahkan masalah ini dengan memiliki skrip yang menggunakan netcat untuk mengirim log tertentu setiap 10 menit dari launchdaemon. Edit sesuai kebutuhan.

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

Ini bukan jawaban nyata tetapi solusi dan terlalu lama untuk komentar.

Saya menghadapi masalah yang sama di Sierra mencoba untuk login skrip shell pembaruan homebrew termasuk perintah logger (yang bekerja di El Capitan). Saya harus meninggalkan logger dan hanya menggunakan gema, pengalihan output dan file log baru:

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