सिएरा पर लकड़हारा कमांड का उपयोग कैसे करें?


11

मैं अपने शेल-स्क्रिप्ट का उपयोग करके ईवेंट / चेक-पॉइंट लॉग करने की कोशिश कर रहा हूं logger

ओएस एक्स में उपयोग loggerया syslogउपयोगिता कैसे करें (संस्करण 10.12 (16A323)) । मैंने कोशिश की है

logger "Hello world"और /var/log/system.logकंसोल ऐप का उपयोग करके जांच की गई , निम्न लॉग प्रविष्टि बनाई गई थी

'–Xó ^ H' नाम के बाइनरी के लिए तार काटने में असफल

loggerओएस एक्स में कैसे उपयोग करें ? क्या OS X सिस्टम लॉग में प्रविष्टि बनाने / जोड़ने के लिए कुछ निर्दिष्ट किया जाना है?


क्या आप यह जानना चाहते हैं कि आप क्यों चाहते हैं? इससे लोगों को आपके लिए विकल्प खोजने में मदद मिल सकती है।
हार्व

मैं सफलतापूर्वक प्रवेश करने में सक्षम था: $ लकड़हारा "यह एक लॉग प्रविष्टि है" $ गूंज $? 0 तब जब मैंने अपने कंसोल में "सभी संदेश" की जाँच की, तो मेरा संदेश दिखा।
हरव।

1
स्थिति कोड 1 से बाहर, कोई आउटपुट नहीं। मैंने लो जीजी एर के साथ कोशिश की ।
एसजी_

3
मैं भी Hello Worldकिसी /var/log/*.logफाइल में नहीं देखता हूं । व्यवहार @SG_ देख रहा है, मेरे मैक पर चलने वाले macOS 10.12 पर प्रतिलिपि प्रस्तुत करने योग्य है। इसके अतिरिक्त, logger -s 'Hello World'कंसोल पर सही तरीके से प्रिंट करता है , लेकिन किसी भी डिस्क पर लॉग फ़ाइल पर नहीं।
ग्राहम मिलन

2
मेरे लिए system.log में दिखाई नहीं दे रहा है, लेकिन अगर मैं कंसोल में "सभी लॉग" देखता हूं, तो यह वहां दिखाई देता है। अजीब!
हरव।

जवाबों:


9

क्योंकि macOS sierra में Apple का लॉगिंग सिस्टम बदल गया। वे Apple सिस्टम लॉग सुविधा से एकीकृत लॉगिंग की ओर बढ़ रहे हैं।

यहां डेवलपर डॉक्यूमेंटेशन का लिंक दिया गया है।

निम्नलिखित संदेश "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

=======

यदि आप जोड़ते हैं - तो आप आउटपुट में भी इवेंट संदेश देखेंगे।

पिछले OS संस्करणों में लकड़हारा कमांड /var/log/system.log फ़ाइल को भेजेगा यदि प्राथमिकता काफी अधिक थी (जैसे -p अलर्ट का उपयोग करके) साथ ही साथ syslog डेटाबेस के लिए। सिएरा में system.log तब नहीं लिखा जाता है जब लकड़हारे का उपयोग -10 चेतावनी के साथ-साथ वैसे भी 10.12.1 में किया जाता है। यह एक बग हो सकता है।

आप नए लॉगिंग सिस्टम को भेजने के लिए अभी भी लकड़हारे का उपयोग कर सकते हैं, लेकिन परिणाम देखने के लिए कंसोल ऐप या क्लि लॉग उपयोगिता या नए एपीआई का उपयोग करना होगा।


1
यह लगभग लिंक-ओनली और "शायद" उत्तर है। एक ~ आम आदमी को समझ में नहीं आएगा कि आपके आदेशों का क्या मतलब है। कृपया कुछ स्पष्टीकरण जोड़ें।
क्लानोमथ

1
चार महीने बाद, और लिंक पहले से ही टूट गया है।
जॉन स्मिथ

मुझे लगता है कि वर्तमान लिंक है: developer.apple.com/reference/os/logging
ktappe

2

मैं एक स्क्रिप्ट है कि netcat का उपयोग करता है एक launchdaemon से हर 10min भेजने के लिए इस समस्या को हल किया। आवश्यकतानुसार संपादित करें।

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

यह कोई वास्तविक जवाब नहीं है बल्कि एक टिप्पणी के लिए एक वर्कअराउंड और बहुत लंबा है।

मैं सिएरा में एक ही समस्या का सामना करने की कोशिश कर रहा था जिसमें लकड़हारा अपडेट शेल स्क्रिप्ट शामिल करने की कोशिश की जा रही थी जिसमें लकड़हारा कमांड (जो एल कैपिटन में काम करता था) भी शामिल है। मुझे लकड़हारा छोड़ना पड़ा और बस प्रतिध्वनि, आउटपुट पुनर्निर्देशन और एक नई लॉग फ़ाइल का उपयोग किया गया:

#!/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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.