Sierra'da günlükçü komutu nasıl kullanılır?


11

Olayları / denetim noktalarını kullanarak benim kabuk-komut dosyası günlüğü çalışıyorum logger.

OS X'te nasıl kullanılır loggerveya syslogyardımcı olur (sürüm 10.12 (16A323)) . denedim

logger "Hello world"ve /var/log/system.logKonsol uygulaması kullanılarak kontrol edildi, günlük girişi oluşturuldu

'–Xó ^ H' adlı ikili dizeler hasat edilemedi

loggerOS X'te nasıl kullanılır ? OS X sistem günlüğüne giriş oluşturmak / eklemek için belirtilecek bir şey var mı?


Lütfen neden istediğinizi söyleyerek sorunuzu geliştirebilir misiniz? Bu, insanların sizin için seçenekler bulmasına yardımcı olabilir.
Harv

Başarılı bir giriş günlüğü başardı: $ logger "Bu bir günlük girişi" $ echo $? 0 Sonra Konsolumda "Tüm mesajlar" ı işaretlediğimde mesajım ortaya çıktı.
Harv

1
Durum kodu 1 ile çıkıldı, çıktı yok. Logger ile denedim .
SG_

3
Ben de Hello Worldherhangi bir /var/log/*.logdosyada hayır görüyorum . @SG_ davranışı görüyor, macOS 10.12 çalıştıran Mac bilgisayarımda yeniden oluşturulabilir. Ayrıca, logger -s 'Hello World'konsola doğru şekilde yazdırılır, ancak disk üzerindeki günlük dosyasına yazdırılmaz.
Graham Miln

2
Benim için system.log dosyasında görünmüyor, ancak konsoldaki "tüm günlükleri" görüntülersem orada görünür. Tek!
Harv

Yanıtlar:


9

MacOS Sierra'da Apple'ın kayıt sistemi değişti. Apple Sistem Günlüğü özelliğinden birleştirilmiş günlüklemeye geçiyorlar.

İşte geliştirici belgelerine bir bağlantı.

Aşağıdaki "Message4me" metni için yeni birleştirilmiş günlüğü filtreler

$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

=======

--İnfo eklerseniz, olay iletisinin kendisini çıktıda da görürsünüz.

Önceki işletim sistemi sürümlerinde, öncelik yeterince yüksekse (örn. -P uyarısı kullanarak) ve syslog veritabanına logger komutu /var/log/system.log dosyasına gönderir. Sierra'da system.log dosyası zaten 10.12.1'de -p uyarısı -not ile birlikte kullanıldığında yazılmaz. Bu bir hata olabilir.

Günlükçüyü yeni günlük sistemine göndermek için kullanmaya devam edebilirsiniz, ancak sonuçları görmek için Konsol uygulamasını veya cli günlük yardımcı programını veya yeni API'yi kullanmanız gerekir.


1
Bu neredeyse sadece link ve "belki" bir cevap. Bir ~ layman, komutlarınızın ne anlama geldiğini anlamaz. Lütfen biraz açıklama ekleyin.
klanomath

1
Dört ay sonra bağlantı koptu.
John Smith

Bence şu anki bağlantı: developer.apple.com/reference/os/logging
ktappe

2

Ben bir launchdaemon her 10 dakikada belirli günlükleri göndermek için netcat kullanan bir komut dosyası ile bu sorunu çözdü. Gerektiği gibi düzenleyin.

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

Bu gerçek bir cevap değil, bir çözüm ve yorum için çok uzun.

Aynı problemi Sierra'da logger komutları (El Capitan'da çalışan) da dahil olmak üzere bir homebrew güncelleme kabuğu betiği kaydetmeye çalışırken karşılaştım . Logger terk etmek zorunda kaldı ve sadece yankı, çıkış yönlendirme ve yeni bir günlük dosyası kullandım:

#!/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
....
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.