/system/software_defined_vehicle/samples में मौजूद SDV की मुख्य सेवाओं के कोड सैंपल की मदद से, अपनी सेवाएं बनाना शुरू किया जा सकता है. हर सैंपल में, इस्तेमाल के उदाहरण के बारे में बताने वाली README फ़ाइल होती है.
लॉगिंग एपीआई का इस्तेमाल करना
दिए गए निर्देशों के बारे में ज़्यादा जानने के लिए, यहां जाएं:
बेसिक लॉग का सैंपल
logging.cpp, main, system, और radio बफ़र में लिखने की सुविधा देता है.
उपलब्ध लॉग बफ़र के बारे में कम शब्दों में जानकारी पाने के लिए, वैकल्पिक लॉग बफ़र देखें पर जाएं.
शर्तों के साथ लॉग करने की सुविधा के बिना, जैसे कि
ALOGI_IF, सैंपल चलाने के लिए:logging_sdv_sampleनमूना चलाने और कंडिशनल लॉग प्रिंट करने के लिए, जैसे कि
ALOGI_IF:LOGIF=1 logging_sdv_sample
स्ट्रक्चर्ड लॉगिंग का सैंपल
सैंपल फ़ाइल: structured_logging.cpp
eventsलॉग बफ़र में लॉग लिखने वाले सैंपल को चलाने के लिए:structured_logging_sdv_sample
event, security, और stats लॉग बफ़र में, फ़्री टेक्स्ट के बजाय स्ट्रक्चर्ड डेटा होता है.
स्ट्रक्चर्ड डेटा को इवेंट लिस्ट एपीआई का इस्तेमाल करके लॉग किया जाता है. इसे हमेशा INFO प्राथमिकता और संख्या वाले टैग आईडी के साथ लॉग किया जाता है.
.logtags फ़ाइल को Android.bp. में logtags एट्रिब्यूट के साथ तय किया जा सकता है
यह जानकारी देने पर, logcat इसका इस्तेमाल करके, संख्या वाले टैग आईडी से टैग का नाम निकालता है. इसके बाद, टैग के नाम का इस्तेमाल स्ट्रक्चर्ड लॉग को फ़िल्टर करने के लिए किया जा सकता है. फ़ाइल फ़ॉर्मैट के बारे में ज़्यादा जानकारी और ब्यौरे के लिए, logcat event.logtags फ़ाइल में मौजूद टिप्पणी देखें.
बिल्ड प्रोसेस के दौरान, सभी logtags फ़ाइलों को मर्ज कर दिया जाता है. इसके बाद, उन्हें Android सिस्टम इमेज में मौजूद /system/etc/event-log-tags फ़ाइल में रख दिया जाता है.
टाइम लॉग फ़िल्टर करने का सैंपल कंपाइल करना
सैंपल फ़ाइल: compile_time_log_filtering.cpp
इस सैंपल में ऐसे मैक्रो शामिल हैं जिन्हें एग्ज़िक्यूट किए जा सकने वाले फ़ाइल से कुछ लॉग हटाने के लिए अडजस्ट किया जा सकता है. ज़्यादा जानकारी के लिए, सोर्स कोड देखें.
लॉग फ़िल्टर करने का उदाहरण: log_filtering.cpp
सैंपल चलाने के लिए, लॉग की कम से कम प्राथमिकता को
WARNपर सेट करें:LOGLEVEL=WARN log_filtering_sdv_sample
सिस्टम प्रॉपर्टी का असर लॉग फ़िल्टर करने पर पड़ता है.
log.tag.<tag>persist.log.tag.<tag>
सिस्टम के सभी लॉग के लिए:
log.tagpersist.log.tag
चुने गए लॉग लेवल को चुनने के लिए, जो क्रम से चुने जाते हैं, हर वैल्यू को V, D, I, W या E पर सेट किया जा सकता है.
इफ़ेक्टिव लॉग लेवल, पहली सिस्टम प्रॉपर्टी पर सेट किया गया लेवल होता है. इसमें एक वैल्यू होती है, जो __android_log_set_minimum_priority कॉल के साथ ऐप्लिकेशन के सेट किए गए लॉग लेवल से कम या ज़्यादा हो सकती है. अगर कोई भी प्रॉपर्टी सेट नहीं की जाती है, तो __android_log_set_minimum_priority के साथ कॉन्फ़िगर किया गया लेवल लागू होता है.
ज़्यादा जानकारी के लिए, लॉगिंग सिस्टम की खास जानकारी देखें.
डिफ़ॉल्ट लॉग टैग को
example_tagपर सेट करके, सैंपल चलाएं:LOGTAG=example_tag log_filtering_sdv_sample
इस सैंपल में, टिप्पणी के तौर पर LOG_TAG मैक्रो की परिभाषा भी दी गई है. इसका इस्तेमाल, सभी लॉग मैसेज के लिए लॉग टैग सेट करने के लिए किया जा सकता है. इस तरह से सेट किया गया टैग, रनटाइम में __android_log_set_default_tag के साथ सेट किए गए टैग को बदल देता है.
अगर LOG_TAG मैक्रो तय नहीं किया गया है और ऐप्लिकेशन __android_log_set_default_tag को कॉल नहीं करता है, तो डिफ़ॉल्ट टैग, getprogname() का नतीजा होता है. उदाहरण के लिए, एक्ज़ीक्यूटेबल का नाम.