DEENESPTFRRUARHIKOZHNL

मॉड्यूल ara::log — Log and Trace

Spezifikation: AUTOSAR_AP_SWS_LogAndTrace.pdf (R25-11) · 75 API-Records

मॉड्यूल गाइडएआई जनित

अनुकूली अनुप्रयोगों और प्लेटफ़ॉर्म सेवाओं के लिए उच्च-प्रदर्शन, प्रकार-सुरक्षित लॉगिंग और ट्रेसिंग को सक्षम बनाता है।
एआई-जनित असत्यापित मॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 7b52e43f3040 उद्गम खुले प्रश्न (2)
कारणात्मक एंकर: R25-11 R25-11 से मान्य इस विनिर्देश संस्करण के लिए नए सिरे से संश्लेषित।
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल

अनुकूली अनुप्रयोगों और प्लेटफ़ॉर्म सेवाओं के लिए उच्च-प्रदर्शन, प्रकार-सुरक्षित लॉगिंग और ट्रेसिंग को सक्षम बनाता है।

कार्यात्मक क्लस्टर 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।

architektur_einbettung cluster_consumers उपभोक्ता (एप्लिकेशन और प्लेटफ़ॉर्म क्लस्टर) cluster_ara_log Functional Cluster Log and Trace (ara::log) cluster_backends आउटपुट और डायग्नोस्टिक सिंक app Adaptive Application logger वालों app->logger CreateLogger / Log* em Execution Management em->logger Logger-API phm Platform Health Management phm->logger Logger-API pers Persistency pers->logger Logger-API tsync Time Synchronization tsync->logger Logger-API ucm Update & Configuration Management ucm->logger Logger-API logstream LogStream logger->logstream Fluent Builder backend_adapter Logging-Backend / DLT-Engine logger->backend_adapter Log(MsgId) / Flush() logstream->backend_adapter ~LogStream() / Flush() console Konsole (Default-Fallback) backend_adapter->console Fallback dlt_sink DLT Log Sink (Ethernet) backend_adapter->dlt_sink DltLogSink arti ARTI / Trace-Werkzeuge backend_adapter->arti TraceArti

संदर्भ आरेख: अनुकूली अनुप्रयोगों और कार्यात्मक प्लेटफ़ॉर्म क्लस्टरों के लिए एक केंद्रीय लॉगिंग और ट्रेसिंग बुनियादी ढांचे के रूप में क्लस्टर 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।

अनमॉडल स्ट्रीम लॉगिंग का प्रवाहएप्लिकेशनवालोंLogStreamLogging-BackendLogInfo()Erzeuge LogStreamLogStream (RVO)operator<<("Statuswert")बफ़र भरेंoperator<<(42)बफ़र भरेंaltExpliziter Flush vor Scope-EndeFlush()बफ़र सामग्री प्रेषित करेंNeuen Strom initiierenस्कोप से बाहर निकलना~LogStream()बफ़र सामग्री प्रेषित करें

सीक्वेंस आरेख: लॉगिंग बैकएंड को बफ़र ट्रांसमिशन तक 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।

architektur_einbettung cluster_consumers उपभोक्ता (एप्लिकेशन और प्लेटफ़ॉर्म क्लस्टर) cluster_ara_log Functional Cluster Log and Trace (ara::log) cluster_backends आउटपुट और डायग्नोस्टिक सिंक app Adaptive Application logger वालों app->logger CreateLogger / Log* em Execution Management em->logger Logger-API phm Platform Health Management phm->logger Logger-API pers Persistency pers->logger Logger-API tsync Time Synchronization tsync->logger Logger-API ucm Update & Configuration Management ucm->logger Logger-API logstream LogStream logger->logstream Fluent Builder backend_adapter Logging-Backend / DLT-Engine logger->backend_adapter Log(MsgId) / Flush() logstream->backend_adapter ~LogStream() / Flush() console Konsole (Default-Fallback) backend_adapter->console Fallback dlt_sink DLT Log Sink (Ethernet) backend_adapter->dlt_sink DltLogSink arti ARTI / Trace-Werkzeuge backend_adapter->arti TraceArti

संदर्भ आरेख: अनुकूली अनुप्रयोगों और कार्यात्मक प्लेटफ़ॉर्म क्लस्टरों के लिए एक केंद्रीय लॉगिंग और ट्रेसिंग बुनियादी ढांचे के रूप में क्लस्टर 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 प्रकारों की एक विस्तृत श्रृंखला का समर्थन करता है:

मेटाडेटा और फ़ॉर्मेटिंग को सटीकता से नियंत्रित किया जा सकता है: 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() को कॉल करने के बाद उसी स्कोप में बाद के स्ट्रीमिंग ऑपरेटर्स के लिए ऑब्जेक्ट की पहचान को नष्ट किए बिना बफ़र को खाली और पुन: इनिशियलाइज़ करता है। प्रश्न (खुला)

अनमॉडल स्ट्रीम लॉगिंग का प्रवाहएप्लिकेशनवालोंLogStreamLogging-BackendLogInfo()Erzeuge LogStreamLogStream (RVO)operator<<("Statuswert")बफ़र भरेंoperator<<(42)बफ़र भरेंaltExpliziter Flush vor Scope-EndeFlush()बफ़र सामग्री प्रेषित करेंNeuen Strom initiierenस्कोप से बाहर निकलना~LogStream()बफ़र सामग्री प्रेषित करें

सीक्वेंस आरेख: लॉगिंग बैकएंड को बफ़र ट्रांसमिशन तक 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।

modelliertes_logging start Logger::Log(msg_id, params) check_threshold Schwellwert erreicht? (msg.level >= threshold) start->check_threshold discard खारिज करें / तत्काल वापसी check_threshold->discard Nein check_trace TraceSwitch aktiv? check_threshold->check_trace Ja end_node Ende discard->end_node trace_arti TraceArti(msg_id, params) check_trace->trace_arti Ja build_dlt buildDltMessage() check_trace->build_dlt Nein trace_arti->end_node check_mask फ़िल्टर जाँच (msg_id & logmask) build_dlt->check_mask send_sink sendDltMessageToSink() check_mask->send_sink Passiert check_mask->end_node Gefiltert send_sink->end_node

एक्टिविटी डायग्राम: 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]।

verbindungszustand unknown ClientState::kUnknown (DLT-Backend startet) not_connected ClientState::kNotConnected (Kein Remote-Client) unknown->not_connected Backend initialisiert connected ClientState::kConnected (Remote-Client verbunden) unknown->connected Client sofort erkannt not_connected->connected Client verbindet sich connected->not_connected Client-Verbindung getrennt

स्टेट डायग्राम: 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

apext::log

TraceArti फ़ंक्शन

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

Argument क्लास

Wrapper type for holding a payload argument with its attributes

Format क्लास

A type holding a formatting hint

Logger क्लास

Represents a logger context

LogStream क्लास

Represents a Log message, allowing stream operators to be used for appending data

इनपुट/आउटपुट << 5
LogStream & operator<< (LogStream &out, LogLevel value) noexcept; SWS_LOG_00063
LogStream & operator<< (LogStream &out, const core::ErrorCode &ec) noexcept; SWS_LOG_00124
template <typename Rep, typename Period> LogStream & operator<< (LogStream &out, const std::chrono::duration< Rep, Period > &value) noexcept; SWS_LOG_00125
LogStream & operator<< (LogStream &out, const ara::core::Instance Specifier &value) noexcept; SWS_LOG_00126
LogStream & operator<< (LogStream &out, const void *value) noexcept; SWS_LOG_00127
Arg फ़ंक्शन

Create 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"

template <typename T> Argument< T > Arg (T &&arg, const char *name=nullptr, const char *unit=nullptr, Format format=Dflt()) noexcept;
AutoFloat फ़ंक्शन

Create a Format instance with Fmt::kAutoFloat formatting hint and given precision.

constexpr Format AutoFloat (std::uint16_t precision=6) noexcept;
AutoFloatMax फ़ंक्शन

Create a Format instance with Fmt::kAutoFloat formatting hint and a precision that is sufficient for full round-trip safety. .

constexpr Format AutoFloatMax () noexcept;
Bin फ़ंक्शन 2

Create a Format instance with Fmt::kBin formatting hint and default precision. .

ओवरलोड Bin 2
constexpr Format Bin () noexcept; SWS_LOG_00215
constexpr Format Bin (std::uint16_t precision) noexcept; SWS_LOG_00216
CreateLogger फ़ंक्शन 3

Creates 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_00021
Logger & CreateLogger (const ara::core::InstanceSpecifier &is) noexcept; SWS_LOG_00256
Logger & CreateLogger (ara::core::StringView ctxId, ara::core::String View ctxDescription) noexcept; SWS_LOG_00263
Dec फ़ंक्शन 2

Create a Format instance with Fmt::kDec formatting hint and default precision. .

ओवरलोड Dec 2
constexpr Format Dec () noexcept; SWS_LOG_00211
constexpr Format Dec (std::uint16_t precision) noexcept; SWS_LOG_00212
DecFloat फ़ंक्शन

Create a Format instance with Fmt::kDecFloat formatting hint and given precision.

constexpr Format DecFloat (std::uint16_t precision=6) noexcept;
DecFloatMax फ़ंक्शन

Create a Format instance with Fmt::kDecFloat formatting hint and a precision that is sufficient for full round-trip safety. .

constexpr Format DecFloatMax () noexcept;
Dflt फ़ंक्शन

Create a Format instance with Fmt::kDefault formatting hint. .

constexpr Format Dflt () noexcept;
EngFloat फ़ंक्शन

Create a Format instance with Fmt::kEngFloat formatting hint and given precision.

constexpr Format EngFloat (std::uint16_t precision=6) noexcept;
EngFloatMax फ़ंक्शन

Create a Format instance with Fmt::kEngFloat formatting hint and a precision that is sufficient for full round-trip safety. .

constexpr Format EngFloatMax () noexcept;
Hex फ़ंक्शन 2

Create a Format instance with Fmt::kHex formatting hint and default precision. .

ओवरलोड Hex 2
constexpr Format Hex () noexcept; SWS_LOG_00209
constexpr Format Hex (std::uint16_t precision) noexcept; SWS_LOG_00210
HexFloat फ़ंक्शन

Create a Format instance with Fmt::kHexFloat formatting hint and given precision.

constexpr Format HexFloat (std::uint16_t precision) noexcept;
HexFloatMax फ़ंक्शन

Create a Format instance with Fmt::kHexFloat formatting hint and a precision that is sufficient for full round-trip safety. .

constexpr Format HexFloatMax () noexcept;
Oct फ़ंक्शन 2

Create a Format instance with Fmt::kOct formatting hint and default precision. .

ओवरलोड Oct 2
constexpr Format Oct () noexcept; SWS_LOG_00213
constexpr Format Oct (std::uint16_t precision) noexcept; SWS_LOG_00214
RegisterConnectionStateHandler फ़ंक्शन

Register 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;
ClientState एन्यूमरेशन

Client state representing the connection state of an external client. .

enum class ClientState : std::int8_t {...};
Fmt एन्यूमरेशन

Format specifiers for log message arguments .

enum class Fmt : std::uint16_t {...};
LogLevel एन्यूमरेशन

List of possible severity levels .

enum class LogLevel : std::uint8_t {...};
ConnectionStateHandler टाइप उपनाम

Callback function type to be registered in ara::log::RegisterConnectionStateHandler.

using ConnectionStateHandler = std::function<void(ClientState)>;

नेमस्पेस

मॉड्यूल का UML क्लास आरेख

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::log nara__log__Argument642 Argument nara__log__Format351 «struct» Format nara__log__Logger529 Logger nara__log__LogStream884 LogStream