मॉड्यूल ara::log — Log and Trace
मॉड्यूल गाइडएआई जनित
अनुकूली अनुप्रयोगों और प्लेटफ़ॉर्म सेवाओं के लिए उच्च-प्रदर्शन, प्रकार-सुरक्षित लॉगिंग और ट्रेसिंग को सक्षम बनाता है।
अनुकूली अनुप्रयोगों और प्लेटफ़ॉर्म सेवाओं के लिए उच्च-प्रदर्शन, प्रकार-सुरक्षित लॉगिंग और ट्रेसिंग को सक्षम बनाता है।
कार्यात्मक क्लस्टर Log and Trace AUTOSAR Adaptive Platform AUTOSAR AP SWS LogAndTrace पृ. 13 पर लॉगिंग और ट्रेसिंग के लिए केंद्रीय बुनियादी ढाँचा प्रदान करता है। अनुप्रयोग और प्लेटफ़ॉर्म डेमॉन टाइप-सुरक्षित डेटा स्ट्रीम के माध्यम से या न्यूनतम परीक्षण ओवरहेड [SWS_LOG_00204] के साथ अत्यधिक कुशल मॉडल किए गए फ़ंक्शन कॉल के माध्यम से लचीले ढंग से लॉग संदेश बनाते हैं। संदेश फ़िल्टरिंग प्रति संदर्भ कॉन्फ़िगर करने योग्य विवरण स्तरों के माध्यम से होती है, जबकि अग्रेषण DLT बैकएंड, ARTI टूल्स या स्थानीय कंसोल [SWS_LOG_00021] पर किया जाता है।
कार्यात्मक क्लस्टर Log and Trace (ara::log) AUTOSAR Adaptive Platform AUTOSAR AP SWS LogAndTrace पृ. 13 में संरचित लॉगिंग, नैदानिक आउटपुट और हार्डवेयर-स्तरीय ट्रेसिंग के लिए सार्वभौमिक बुनियादी ढांचा प्रस्तुत करता है। प्रत्येक Logger इंस्टेंस एक प्रक्रिया के भीतर अपने स्वयं के संदर्भ का प्रतिनिधित्व करता है और इसके निर्माण पर स्वचालित रूप से केंद्रीय लॉगिंग बैकएंड EXP SWArchitecture पृ. 57 के साथ पंजीकृत हो जाता है। अनुप्रयोगों के अलावा, बुनियादी प्लेटफ़ॉर्म सेवाएँ जैसे Execution Management, Platform Health Management और Persistency भी संचालन प्रलेखन के लिए अनिवार्य रूप से Logger इंटरफ़ेस को एकीकृत करती हैं AUTOSAR AP EXP SWArchitecture पृ. 58।
संदर्भ आरेख: अनुकूली अनुप्रयोगों और कार्यात्मक प्लेटफ़ॉर्म क्लस्टरों के लिए एक केंद्रीय लॉगिंग और ट्रेसिंग बुनियादी ढांचे के रूप में क्लस्टर Log and Trace का एम्बेडिंग। स्रोत: AUTOSAR AP SWS LogAndTrace पृ. 13, AUTOSAR AP EXP SWArchitecture पृ. 58, SWS LogAndTrace पृ. 21, AUTOSAR AP SWS OperatingSystemInterface पृ. 21
मॉड्यूल इंटरैक्शन के दो बुनियादी रूपों के बीच अंतर करता है:
- गैर-मॉडल लॉगिंग: एक फ्लुएंट-बिल्डर पैटर्न गंभीरता-संबंधित मेथड्स (जैसे
LogInfo()याLogError()) के माध्यम से एक अस्थायीLogStreamऑब्जेक्ट बनाता है, जो स्केलर प्रकारों, स्ट्रिंग्स, एरर कोड और प्रारूप संशोधक को टाइप-सुरक्षित तरीके से जोड़ता है और बफ़र को नवीनतम रूप से डिस्ट्रक्टर में याFlush()के माध्यम से प्रसारित करता है [SWS_LOG_00067], [SWS_LOG_00039], [SWS_LOG_00262]। - मॉडल की गई लॉगिंग: सिंगल-कॉल इंटरफ़ेस
Logger::Log(id, args...)के माध्यम से, मैनिफ़ेस्ट में पहले से घोषित संदेश भेजे जाते हैं, जो निष्क्रिय थ्रेशोल्ड होने पर ऑब्जेक्ट इंस्टैंसिएशन के बिना अत्यधिक कुशल फ़िल्टरिंग को सक्षम बनाता है [SWS_LOG_00204], PlatformDesign पृ. 74।
सीक्वेंस आरेख: लॉगिंग बैकएंड को बफ़र ट्रांसमिशन तक LogStream के माध्यम से गैर-मॉडल स्ट्रीम लॉगिंग का प्रवाह। स्रोत: [SWS_LOG_00067], [SWS_LOG_00040], [SWS_LOG_00039], [SWS_LOG_00262], PlatformDesign पृ. 74
अनावश्यक कंप्यूटिंग समय से बचने के लिए, सक्रिय रिपोर्टिंग स्तर को IsEnabled(logLevel) का उपयोग करके अग्रिम रूप से सत्यापित किया जा सकता है या रनटाइम पर SetThreshold(threshold) के माध्यम से अनुकूलित किया जा सकता है [SWS_LOG_00070], [SWS_LOG_00255]। Ethernet के माध्यम से DLT चैनलों या ARTI टूल्स पर अग्रेषित करने के अलावा, मॉडल कॉन्फ़िगरेशन अनुपस्थित होने पर कंसोल एक फ़ॉलबैक के रूप में कार्य करता है [SWS_LOG_00021], जबकि बाहरी डायग्नोस्टिक कनेक्शन स्थिति की अतुल्यकालिक रूप से RegisterConnectionStateHandler के माध्यम से निगरानी की जा सकती है [SWS_LOG_00098], [SWS_LOG_00205]।
सिस्टम आर्किटेक्चर और Log and Trace की कार्यात्मक भूमिका
कार्यात्मक क्लस्टर Log and Trace (ara::log) AUTOSAR Adaptive Platform AUTOSAR AP SWS LogAndTrace पृ. 13 पर नैदानिक, ट्रेसिंग और लॉग संदेशों के मानकीकृत कैप्चर, अग्रेषण और फ़िल्टरिंग के लिए केंद्रीय, क्रॉस-कटिंग सबसिस्टम बनाता है। प्रोग्रामिंग इंटरफ़ेस Logger एकीकृत C++ प्लेटफ़ॉर्म API प्रदान करता है, जिसका उपभोग अनुप्रयोग-विशिष्ट प्रक्रियाओं (Adaptive Applications) के साथ-साथ बुनियादी कार्यात्मक प्लेटफ़ॉर्म क्लस्टरों द्वारा आधारभूत संरचना के रूप में किया जाता है AUTOSAR AP EXP SWArchitecture पृ. 58। इन उपभोग करने वाले सिस्टम डेमन्स में प्रक्रिया जीवनचक्र दस्तावेज़ीकरण के लिए Execution Management AUTOSAR AP EXP SWArchitecture पृ. 50, स्थिति निगरानी के लिए Platform Health Management AUTOSAR AP SWS PlatformHealthManagement पृ. 16, उच्च-सटीक समय संदर्भों के लिए Time Synchronization AUTOSAR AP SWS TimeSynchronization पृ. 17, और सॉफ़्टवेयर अपडेट के दौरान Update and Configuration Management AUTOSAR AP EXP SWArchitecture पृ. 141 शामिल हैं।
वास्तुशिल्प रूप से, प्रत्येक लॉगर इंस्टेंस किसी एप्लिकेशन या प्रोसेस स्पेस के भीतर एक अद्वितीय संदर्भ (Context ID) को समाहित करता है, जिससे यह संदर्भ निर्माण के समय लॉगिंग बैकएंड के साथ स्वचालित रूप से पंजीकृत हो जाता है और एप्लिकेशन शटडाउन पर स्वचालित रूप से अपंजीकृत हो जाता है EXP SWArchitecture पृ. 57। लॉगिंग बैकएंड स्वरूपित संदेशों को कॉन्फ़िगर किए गए आउटपुट चैनलों (उदा. मशीन-मेनिफ़ेस्ट के अनुसार Ethernet पर DLT प्रोटोकॉल सिंक) या स्थानीय बफ़र्स पर अग्रेषित करता है, जहाँ परिनियोजन मॉडल की अनुपस्थिति में ऑपरेटिंग सिस्टम कंसोल का डिफ़ॉल्ट रूप से सहारा लिया जाता है [SWS_LOG_00021], SWS LogAndTrace पृ. 21। इसके अतिरिक्त, एक डिकपल्ड एडेप्टर आर्किटेक्चर ऑपरेटिंग सिस्टम (POSIX/OS) को AUTOSAR Run-Time Interface (ARTI) के माध्यम से आंतरिक कर्नेल और शेड्यूलिंग मेट्रिक्स को ara::log के संदेशों के साथ सिंक्रनाइज़ करके प्रदान करने की अनुमति देता है AUTOSAR AP SWS OperatingSystemInterface पृ. 21।
संदर्भ आरेख: अनुकूली अनुप्रयोगों और कार्यात्मक प्लेटफ़ॉर्म क्लस्टरों के लिए एक केंद्रीय लॉगिंग और ट्रेसिंग बुनियादी ढांचे के रूप में क्लस्टर Log and Trace का एम्बेडिंग। स्रोत: AUTOSAR AP SWS LogAndTrace पृ. 13, AUTOSAR AP EXP SWArchitecture पृ. 58, SWS LogAndTrace पृ. 21, AUTOSAR AP SWS OperatingSystemInterface पृ. 21
इंस्टैंसिएशन, संदर्भ प्रबंधन और थ्रेशोल्ड नियंत्रण
लॉगर संदर्भ का प्रावधान फ़ैक्टरी फ़ंक्शंस ara::log::CreateLogger के माध्यम से किया जाता है, क्योंकि क्लास Logger का डिफ़ॉल्ट कंस्ट्रक्टर हटा दिया गया है [SWS_LOG_00259]। अनुप्रयोग या तो एक संदर्भ ID (ctxId), एक विवरण (ctxDescription) और वैकल्पिक रूप से एक डिफ़ॉल्ट लॉग स्तर निर्दिष्ट करके प्रोग्रामेटिक रूप से लॉगर को इंस्टैंसिएट कर सकते हैं [SWS_LOG_00021], [SWS_LOG_00263], या ara::core::InstanceSpecifier का उपयोग करके एक मॉडल तत्व के माध्यम से इंस्टेंस-आधारित रूप से प्राप्त कर सकते हैं [SWS_LOG_00256]। Logger का डिस्ट्रक्टर थ्रेड-सुरक्षित तरीके से डी-रजिस्ट्रेशन को संभालता है [SWS_LOG_00260]।
संदेशों की ग्रैन्युलैरिटी और प्राथमिकता को एन्यूमरेशन LogLevel द्वारा पदानुक्रमित रूप से मैप किया जाता है: kFatal (अपूरणीय सिस्टम त्रुटि), kError (कार्यात्मक हानि के साथ त्रुटि), kWarn (लक्ष्य व्यवहार के खतरे में होने पर चेतावनी), kInfo (सामान्य परिचालन जानकारी), kDebug (विस्तृत निदान) और kVerbose (विस्तृत ट्रेसिंग) [SWS_LOG_00018], ManifestSpecification पृ. 416। रनटाइम ऑप्टिमाइज़ेशन के लिए, संदर्भ पर प्रासंगिक लॉग स्तर वर्तमान में सक्रिय है या नहीं, यह क्वेरी IsEnabled(logLevel) के माध्यम से पहले से जाँचकर लॉग डेटा की गणना-गहन तैयारियों से बचा जा सकता है [SWS_LOG_00070]। लॉगर इंस्टेंस के सक्रिय रिपोर्टिंग थ्रेशोल्ड को रनटाइम पर आवश्यकतानुसार SetThreshold(threshold) के माध्यम से गतिशील रूप से समायोजित किया जा सकता है [SWS_LOG_00255]।
गैर-मॉडल लॉगिंग और स्ट्रीम-आधारित संदेश रचना
गैर-मॉडल संदेशों के लिए, ara::log बिल्डर डिज़ाइन पैटर्न पर आधारित एक फ्लुएंट इंटरफ़ेस प्रदान करता है PlatformDesign पृ. 74। प्रवेश Logger इंस्टेंस के गंभीरता-विशिष्ट सदस्य फ़ंक्शंस, विशेष रूप से LogFatal(), LogError(), LogWarn(), LogInfo(), LogDebug() और LogVerbose() के माध्यम से या WithLevel(logLevel) के माध्यम से होता है, जो एक अस्थायी, हल्का LogStream ऑब्जेक्ट लौटाते हैं [SWS_LOG_00064], [SWS_LOG_00065], [SWS_LOG_00066], [SWS_LOG_00067], [SWS_LOG_00068], [SWS_LOG_00069], [SWS_LOG_00131]। डेटा को फिर टाइप-सुरक्षित स्ट्रीम इंसर्शन ऑपरेटर (operator<<) के माध्यम से आंतरिक संदेश बफ़र में शृंखलाबद्ध (कॉन्केटनेशन) रूप से जोड़ा जाता है [SWS_LOG_00040]।
स्ट्रीम इंटरफ़ेस मैन्युअल फ़ॉर्मेटिंग त्रुटियों के बिना नेटिव C++ और AUTOSAR प्रकारों की एक विस्तृत श्रृंखला का समर्थन करता है:
- पूर्णांक प्रकार (8 से 64 बिट तक हस्ताक्षरित और अहस्ताक्षरित) साथ ही बूलियन मान [SWS_LOG_00040], [SWS_LOG_00041], [SWS_LOG_00042], [SWS_LOG_00043], [SWS_LOG_00044], [SWS_LOG_00045], [SWS_LOG_00046], [SWS_LOG_00047], [SWS_LOG_00048]।
- एकल और दोहरी सटीकता के फ़्लोटिंग-पॉइंट प्रकार (
float,double) [SWS_LOG_00049], [SWS_LOG_00050]। - नल-टर्मिनेटेड UTF-8 स्ट्रिंग्स और
ara::core::StringView[SWS_LOG_00051], [SWS_LOG_00062]। - विशिष्ट प्लेटफ़ॉर्म प्रकार जैसे पाठ रूप में
LogLevel[SWS_LOG_00063], त्रुटि ऑब्जेक्ट्सara::core::ErrorCode[SWS_LOG_00124], समय अंतरालstd::chrono::duration[SWS_LOG_00125], मॉडल संदर्भara::core::InstanceSpecifier[SWS_LOG_00126], कच्चे पॉइंटर्स [SWS_LOG_00127] औरara::core::Span<const ara::core::Byte>के माध्यम से बाइट अनुक्रम [SWS_LOG_00128]।
WithLocation(file, line) के माध्यम से सोर्स-कोड ऑरिजिन कैप्चर किया जाता है [SWS_LOG_00129], WithTag(tag) कार्यात्मक कीवर्ड्स जोड़ता है [SWS_LOG_00132], और WithPrivacy(value) सबसे निचले 8 बिट्स के माध्यम से एक कॉन्फिडेंशियल लेवल निर्धारित करता है [SWS_LOG_00258]। नाम और फ़िज़िकल यूनिट वाले फ़ॉर्मेटेड आर्ग्युमेंट्स को हेल्पर टेम्पलेट Arg के माध्यम से एनकैप्सुलेट किया जाता है [SWS_LOG_00201], [SWS_LOG_00203], जो इनम Fmt से फ़ॉर्मेटिंग हेल्पर्स Dflt, Hex, Dec, Oct, Bin, DecFloat, EngFloat, HexFloat और AutoFloat द्वारा समर्थित हैं [SWS_LOG_00206], [SWS_LOG_00208], [SWS_LOG_00209], [SWS_LOG_00211], [SWS_LOG_00217], [SWS_LOG_00225], [SWS_LOG_00226]।
लाइफ़साइकिल के संदर्भ में, LogStream एक Move-only ऑब्जेक्ट है: कॉपी कंस्ट्रक्टर और कॉपी असाइनमेंट ऑपरेटर हटा दिए गए हैं [SWS_LOG_00174], [SWS_LOG_00175], जबकि मूव कंस्ट्रक्टर को Return Value Optimization (RVO) का समर्थन करने के लिए डिक्लेयर किया गया है [SWS_LOG_00176]; मूव असाइनमेंट ऑपरेटर हटा दिया गया है [SWS_LOG_00177]। स्कोप से बाहर निकलते समय बफ़र कंटेंट को डिस्ट्रक्टर ~LogStream() के माध्यम से स्वचालित रूप से लॉगिंग फ़्रेमवर्क में भेज दिया जाता है [SWS_LOG_00262]। यदि एक LogStream ऑब्जेक्ट का उपयोग एक ही स्कोप के भीतर क्रमिक रूप से कई संदेशों के लिए किया जाना है, तो बफ़र ट्रांसमिशन को Flush() के ज़रिए स्पष्ट रूप से ट्रिगर किया जाना चाहिए, जिससे एक नया मैसेज स्ट्रीम इनिशियलाइज़ होता है [SWS_LOG_00039]। Interpretation: LogStream का आंतरिक बफ़र प्रबंधन संभवतः Flush() को कॉल करने के बाद उसी स्कोप में बाद के स्ट्रीमिंग ऑपरेटर्स के लिए ऑब्जेक्ट की पहचान को नष्ट किए बिना बफ़र को खाली और पुन: इनिशियलाइज़ करता है। प्रश्न (खुला)
सीक्वेंस आरेख: लॉगिंग बैकएंड को बफ़र ट्रांसमिशन तक LogStream के माध्यम से गैर-मॉडल स्ट्रीम लॉगिंग का प्रवाह। स्रोत: [SWS_LOG_00067], [SWS_LOG_00040], [SWS_LOG_00039], [SWS_LOG_00262], PlatformDesign पृ. 74
मॉडल की गई लॉगिंग और ARTI ट्रेसिंग के लिए ब्रांचिंग
अनमॉडल किए गए संदेशों के चरणबद्ध निर्माण के विपरीत, ara::log मैनिफ़ेस्ट में मॉडल किए गए संदेशों के लिए Logger::Log(id, args...) तथा Logger::LogWith(attrs, msgId, params...) के माध्यम से एक अत्यधिक कुशल सिंगल-कॉल इंटरफ़ेस को परिभाषित करता है [SWS_LOG_00204], [SWS_LOG_00133]। सभी आर्ग्युमेंट्स एक ही फ़ंक्शन कॉल में पास किए जाते हैं, जिससे सप्रेस्ड संदेशों के मामले में रनटाइम ओवरहेड न्यूनतम हो जाता है: पैरामीटर पासिंग के ठीक बाद, एक सिंगल कंडीशन थ्रेशोल्ड वैल्यू की जाँच करती है और यदि कॉन्फ़िगर किया गया लॉग लेवल प्राप्त नहीं होता है तो तुरंत वापस लौट जाती है PlatformDesign पृ. 74।
Log के कॉल के भीतर, प्रोसेसिंग पाथ विभाजित हो जाता है: DLT सीरियलाइज़ेशन के क्लासिक पाथ (buildDltMessage(), लॉग मास्क के ज़रिए फ़िल्टरिंग और सिंक को डिलीवरी) के अलावा, TraceArti(msg_id, params...) के माध्यम से AUTOSAR Run-Time Interface (ARTI) का उपयोग करते हुए हार्डवेयर-निकट रनटाइम ट्रेसिंग के लिए एक समर्पित पाथ मौजूद है [SWS_LOG_20000], AUTOSAR AP SWS LogAndTrace पृ. 42। आवश्यक न्यूनतम रनटाइम ओवरहेड सुनिश्चित करने के लिए, TraceArti पर फ़ॉरवर्डिंग को संभवतः कंपाइल-टाइम पर स्टैटिक टेम्पलेट स्पेशलाइज़ेशन के माध्यम से हल किया जाता है। प्रश्न (खुला) ARTI बैकएंड MsgId पर आधारित अपने स्वयं के मानदंडों के अनुसार फ़िल्टर करता है और DLT बफ़रिंग को पूरी तरह से बायपास करता है, जो नियमित लॉगिंग सबसिस्टम में व्यवधान डाले बिना रियल-टाइम-क्रिटिकल ट्रेसिंग की अनुमति देता है AUTOSAR AP SWS LogAndTrace पृ. 42।
एक्टिविटी डायग्राम: DLT बैकएंड और ARTI ट्रेसिंग के बीच मॉडल किए गए संदेश भेजते समय कंट्रोल और फ़िल्टर फ़्लो। स्रोत: [SWS_LOG_00204], [SWS_LOG_20000], AUTOSAR AP SWS LogAndTrace पृ. 42, PlatformDesign पृ. 74
क्लाइंट कनेक्शन मॉनिटरिंग और डायग्नोस्टिक्स कनेक्शन
Log and Trace न केवल स्थानीय आउटपुट चैनल प्रदान करता है, बल्कि इनम ClientState द्वारा दर्शाए गए बाहरी डायग्नोस्टिक क्लाइंट्स (उदा. Ethernet पर DLT व्यूअर) की स्थिति की भी निगरानी करता है: kUnknown (-1, DLT बैकएंड अभी तैयार नहीं है), kNotConnected (कोई रिमोट क्लाइंट डिटेक्ट नहीं हुआ), और kConnected (बाहरी क्लाइंट से कनेक्शन सक्रिय है) [SWS_LOG_00098]। यह अनुप्रयोगों को किसी विश्लेषण उपकरण की भौतिक उपस्थिति से विस्तृत ट्रेसिंग को लिंक करने की अनुमति देता है।
एसिंक्रोनस स्टेट ट्रैकिंग के लिए, ऍप्लिकेशन्स फ़ंक्शन उपनाम ConnectionStateHandler = std::function<void(ClientState)> का उपयोग करके ara::log::RegisterConnectionStateHandler के माध्यम से एक कॉलबैक फ़ंक्शन पंजीकृत करते हैं [SWS_LOG_00205], [SWS_LOG_00265]। लॉगिंग फ़्रेमवर्क यहाँ ठीक एक सक्रिय हैंडलर पंजीकरण का समर्थन करता है: RegisterConnectionStateHandler का दोबारा कॉल पहले से स्थापित कॉलबैक को बिना किसी प्रतिबंध के ओवरराइट कर देता है [SWS_LOG_00205]।
स्टेट डायग्राम: ClientState के अनुसार बाहरी क्लाइंट के स्टेट ट्रांज़िशन। स्रोत: [SWS_LOG_00098], [SWS_LOG_00205], [SWS_LOG_00265]
त्रुटि की स्थिति में व्यवहार
मॉड्यूल मुख्य रूप से कंपाइल-टाइम स्टैटिक टाइप चेकिंग और सख्त अपवाद गारंटी के माध्यम से कार्यात्मक सुरक्षा और मजबूती लागू करता है:
- कंपाइल-टाइम त्रुटियाँ (ill-formed):
Logger::Log(id, args...)का कॉल अमान्य (ill-formed) होता है, यदि पास किए गए आर्ग्युमेंट्स मैनिफ़ेस्ट में घोषित संदेश सिग्नेचर से सटीक रूप से मेल नहीं खाते हैं [SWS_LOG_00204]। इसी तरह, ऐसे प्रकारों के साथArg()का उपयोग, जो न तो अंकगणितीय हैं, न ही बूलियन, और न हीStringViewयाSpan<const Byte>में परिवर्तनीय हैं, कंपाइलेशन विफलता का कारण बनता है [SWS_LOG_00201]। फ़ंक्शनWithPrivacy(value)यह भी लागू करता है कि पैरामीटर प्रकार एक पूर्णांक प्रकार या एक इनम होना चाहिए [SWS_LOG_00258]। - निर्माण और असाइनमेंट प्रतिबंध: अनपेक्षित बफ़र दोहराव या संसाधन संघर्षों से बचने के लिए,
LogStreamके कॉपी कंस्ट्रक्टर और कॉपी असाइनमेंट ऑपरेटर के साथ-साथ मूव असाइनमेंट ऑपरेटर को स्पष्ट रूप से हटा दिया गया है [SWS_LOG_00174], [SWS_LOG_00175], [SWS_LOG_00177]। - इंस्टेंसिएशन पर रनटाइम अखंडता: यदि मशीन या एप्लिकेशन मॉडल में
CreateLogger(is)परara::core::InstanceSpecifierका रिज़ॉल्यूशन विफल हो जाता है या यदि यह किसी अनुमत मॉडल तत्व को संदर्भित नहीं करता है, तो सिस्टम एकInstanceSpecifierMappingIntegrityViolationरिपोर्ट करता है [SWS_LOG_00256]। - फ़ेल-सेफ़ फ़ॉलबैक सिंक: यदि रनटाइम पर DLT सेवा के लिए कोई परिनियोजन मॉडल या नेटवर्क कनेक्शन उपलब्ध नहीं है, तो फ़्रेमवर्क स्वचालित रूप से स्थानीय कंसोल पर डिफ़ॉल्ट आउटपुट सिंक के रूप में स्विच हो जाता है, ताकि कोई डायग्नोस्टिक जानकारी चुपचाप खो न जाए [SWS_LOG_00021], [SWS_LOG_00263]। कंसोल पर
core::ErrorCodeआउटपुट करते समय, यह डोमेन नाम और संख्यात्मक त्रुटि मान के माध्यम से प्रदर्शित होता है [SWS_LOG_00124]। - एक्सेप्शन सुरक्षा: सभी स्ट्रीमिंग ऑपरेटर्स, थ्रेशोल्ड क्वेरीज़ और डिस्ट्रक्टर
~LogStream()कोnoexceptके रूप में घोषित किया गया है, ताकि यह सुनिश्चित किया जा सके कि लॉगिंग किसी भी समय अनुप्रयोग फ़ंक्शन ब्लॉकों में अनहैंडल्ड एक्सेप्शन्स का प्रसार न करे [SWS_LOG_00040], [SWS_LOG_00070], [SWS_LOG_00262]; इसके विपरीत, डिस्ट्रक्टर~Logger()औपचारिक रूप से noexcept के रूप में निर्दिष्ट नहीं है [SWS_LOG_00260]।
आगे विस्तृत साक्ष्य
Log and Trace मॉड्यूल की वास्तुकला और व्यवहार AUTOSAR विनिर्देश के निम्नलिखित संदर्भ बिंदुओं में लंगर डाले हुए हैं:
- क्लस्टर इंटरफ़ेस विनिर्देश:
LoggerऔरLogStreamके मानक C++ सिग्नेचर, स्ट्रीम ऑपरेटर्स और संदर्भ विधियाँ Log and Trace के विनिर्देश में परिभाषित हैं [SWS_LOG_00021], [SWS_LOG_00039], [SWS_LOG_00064], [SWS_LOG_00204], AUTOSAR AP SWS LogAndTrace पृ. 13। - प्लेटफ़ॉर्म डिज़ाइन और प्रदर्शन: मॉडल किए गए संदेशों के लिए बिल्डर पैटर्न और अत्यधिक कुशल सिंगल-कॉल इनवोकेशन के बीच वास्तुशिल्प तुलना Platform Design में प्रस्तुत की गई है PlatformDesign पृ. 74।
- प्लेटफ़ॉर्म-व्यापी निर्भरताएँ: कार्यात्मक प्लेटफ़ॉर्म क्लस्टर्स द्वारा
Loggerइंटरफ़ेस का अनिवार्य उपयोग संबंधित आर्किटेक्चर दस्तावेज़ों में प्रलेखित है AUTOSAR AP EXP SWArchitecture पृ. 58, AUTOSAR AP EXP SWArchitecture पृ. 50, AUTOSAR AP SWS PlatformHealthManagement पृ. 16। - मैनिफ़ेस्ट और परिनियोजन मॉडल: DLT लॉग चैनलों, प्रोसेस मैपिंग और मशीन एंडपॉइंट्स का कॉन्फ़िगरेशन मैनिफ़ेस्ट विनिर्देश में विनियमित है SWS LogAndTrace पृ. 21, ManifestSpecification पृ. 416।
- ऑपरेटिंग सिस्टम एडेप्टर और ARTI:
ara::logसे नेटिव ऑपरेटिंग सिस्टम ट्रेस बफ़र्स का कनेक्शन औरTraceArtiके माध्यम से हार्डवेयर-निकट कैप्चर OSI और ट्रेस आर्किटेक्चर में निर्दिष्ट हैं [SWS_LOG_20000], AUTOSAR AP SWS OperatingSystemInterface पृ. 21, AUTOSAR AP SWS LogAndTrace पृ. 42।
यह मॉड्यूल गाइड AUTOSAR Adaptive R25-11 के मानक विनिर्देशों और संबंधित दस्तावेज़ अनुभागों के आधार पर स्वचालित रूप से तैयार किया गया था।
function: 65 enumeration: 3 class: 3 variable: 2 type alias: 1 struct: 1
क्लासें
ArgumentFormatLoggerLogStreamफ़ंक्शन
ArgAutoFloatAutoFloatMaxBinCreateLoggerDecDecFloatDecFloatMaxDfltEngFloatEngFloatMaxHexHexFloatHexFloatMaxOctRegisterConnectionStateHandlerTraceArtiटाइप
ConnectionStateHandlerएन्यूमरेशन
ClientStateFmtLogLevelविषय मानचित्र
इस रिलीज़ के लिए कोई तत्व डेटा उपलब्ध नहीं
apext::log
Handles a modeled message, specific to the used trace tool. This function is only called internally by the Logger framework when switching between Log and TraceArti. It represents the interface to trace tools. The runtime overhead of this function shall be kept as minimal as possible, e.g. by using specializations based on the MsgId.
template <typename MsgId, typename... Params> void TraceArti (const MsgId &msg_id, const Params &... params) noexcept;ara::log
Wrapper type for holding a payload argument with its attributes
A type holding a formatting hint
Represents a logger context
Represents a Log message, allowing stream operators to be used for appending data
इनपुट/आउटपुट << 5
LogStream & operator<< (LogStream &out, LogLevel value) noexcept; SWS_LOG_00063LogStream & operator<< (LogStream &out, const core::ErrorCode &ec) noexcept; SWS_LOG_00124template <typename Rep, typename Period> LogStream & operator<< (LogStream &out, const std::chrono::duration< Rep, Period > &value) noexcept; SWS_LOG_00125LogStream & operator<< (LogStream &out, const ara::core::Instance Specifier &value) noexcept; SWS_LOG_00126LogStream & operator<< (LogStream &out, const void *value) noexcept; SWS_LOG_00127Create a wrapper object for the given arguments. Calling this function shall be ill-formed if any of these conditions are met: • T is not an arithmetic type and not "bool" and not convertible to "ara::core::StringView" and not convertible to "ara::core::Span<const ara::core::Byte>" • T is convertible to "ara::core::StringView" or convertible to "ara::core::Span<const ara::core::Byte>" or "bool", and "unit" is not "nullptr"
Create a Format instance with Fmt::kAutoFloat formatting hint and given precision.
constexpr Format AutoFloat (std::uint16_t precision=6) noexcept;Create a Format instance with Fmt::kAutoFloat formatting hint and a precision that is sufficient for full round-trip safety. .
constexpr Format AutoFloatMax () noexcept;Create a Format instance with Fmt::kBin formatting hint and default precision. .
ओवरलोड Bin 2
constexpr Format Bin () noexcept; SWS_LOG_00215constexpr Format Bin (std::uint16_t precision) noexcept; SWS_LOG_00216Creates a Logger object, holding the context which is registered in the Logging framework. If no model is available the sink shall be the console per default.
ओवरलोड CreateLogger 3
Logger & CreateLogger (ara::core::StringView ctxId, ara::core::String View ctxDescription, LogLevel ctxDefLogLevel) noexcept; SWS_LOG_00021Logger & CreateLogger (const ara::core::InstanceSpecifier &is) noexcept; SWS_LOG_00256Logger & CreateLogger (ara::core::StringView ctxId, ara::core::String View ctxDescription) noexcept; SWS_LOG_00263Create a Format instance with Fmt::kDec formatting hint and default precision. .
ओवरलोड Dec 2
constexpr Format Dec () noexcept; SWS_LOG_00211constexpr Format Dec (std::uint16_t precision) noexcept; SWS_LOG_00212Create a Format instance with Fmt::kDecFloat formatting hint and given precision.
constexpr Format DecFloat (std::uint16_t precision=6) noexcept;Create a Format instance with Fmt::kDecFloat formatting hint and a precision that is sufficient for full round-trip safety. .
constexpr Format DecFloatMax () noexcept;Create a Format instance with Fmt::kDefault formatting hint. .
constexpr Format Dflt () noexcept;Create a Format instance with Fmt::kEngFloat formatting hint and given precision.
constexpr Format EngFloat (std::uint16_t precision=6) noexcept;Create a Format instance with Fmt::kEngFloat formatting hint and a precision that is sufficient for full round-trip safety. .
constexpr Format EngFloatMax () noexcept;Create a Format instance with Fmt::kHex formatting hint and default precision. .
ओवरलोड Hex 2
constexpr Format Hex () noexcept; SWS_LOG_00209constexpr Format Hex (std::uint16_t precision) noexcept; SWS_LOG_00210Create a Format instance with Fmt::kHexFloat formatting hint and given precision.
constexpr Format HexFloat (std::uint16_t precision) noexcept;Create a Format instance with Fmt::kHexFloat formatting hint and a precision that is sufficient for full round-trip safety. .
constexpr Format HexFloatMax () noexcept;Create a Format instance with Fmt::kOct formatting hint and default precision. .
ओवरलोड Oct 2
constexpr Format Oct () noexcept; SWS_LOG_00213constexpr Format Oct (std::uint16_t precision) noexcept; SWS_LOG_00214Register a callback to be invoked whenever the connection state changes. Only a single function can be installed this way; if a callback was already registered before, only the newly registered one is used henceforth.
void RegisterConnectionStateHandler (ConnectionStateHandler callback) noexcept;Client state representing the connection state of an external client. .
enum class ClientState : std::int8_t {...};Format specifiers for log message arguments .
enum class Fmt : std::uint16_t {...};List of possible severity levels .
enum class LogLevel : std::uint8_t {...};Callback function type to be registered in ara::log::RegisterConnectionStateHandler.
using ConnectionStateHandler = std::function<void(ClientState)>;नेमस्पेस
- apext::log 0 Klassen, 1 freie Funktionen
- ara::log 4 Klassen, 27 freie Funktionen
मॉड्यूल का UML क्लास आरेख
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल