AUTOSAR_AP_EXP_SWArchitecture
FIG-eb99d00fdbb31ee4
522 × 384 px
1 Release(s)
Figure 9.15: Interfaces of Log and Trace
SHA-256 Inhalts-Fingerabdruck:
eb99d00fdbb31ee424abfd23f6f2258cf2d13a25826f822184e3c64b449cbb69
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: UML-Schnittstellen- und Realisierungsdiagramm (AUTOSAR Adaptive Platform UML-Profil für funktionale Cluster).
- Architektur-Kontext: Spezifiziert die native C++-Programmierschnittstelle (
«aapNativeInterface») des funktionalen Clusters Log and Trace (LOG) («aapFunctionalCluster») gemäßAUTOSAR_SWS_LogAndTraceinnerhalb der AUTOSAR Adaptive Platform (Namespaceara::log). - Funktionaler Zweck: Bereitstellung standardisierter Logging- und Tracing-Dienste (strukturierte Nachrichten, Loglevel-Filterung, Streaming, DLT-Anbindung) für
Adaptive Applicationszur Laufzeit.
2. Komponenten, Entitäten & Schnittstellen
Akteure & Komponenten
Adaptive Application: Client-Komponente im User-Space, greift über«use»-Abhängigkeiten auf die drei logischen Schnittstellen zu.«aapFunctionalCluster» Log and Trace: Plattform-Instanz (Server/Daemon), die die drei Schnittstellen realisiert (Darstellung via UML-Realisierungspfeile mit gestrichelter Linie und geschlossener, nicht ausgefüllter Pfeilspitze).
Schnittstellen & Klassen
«aapAPI, aapNativeInterface» Log and Trace(Namespace-Ebene / Factory):- Enthält statische Utility- und Factory-Methoden (unterstrichen im Klassendiagramm):
CreateLogger(...): Factory zur Erzeugung oder Abfrage einerLogger-Instanz für eine spezifische Context-ID.Arg(...),BinFormat(...),HexFormat(...): Formatierungs-Helfer für typsichere binäre/hexadezimale Formatierung im Stream.remoteClientState(): Statusabfrage bzgl. aktiver Verbindung zu externen Diagnose-/DLT-Clients.
- Enthält statische Utility- und Factory-Methoden (unterstrichen im Klassendiagramm):
«aapAPI, aapNativeInterface» Log and Trace::Logger(ara::log::Logger):- Kapselt den Logging-Kontext (spezifische Context-ID und Log-Level-Konfiguration).
IsEnabled(): Abfrage, ob ein bestimmter Log-Level aktiv geschaltet ist (Filter-Preflight).Log(MsgId, Params): Strukturierte, ID-basierte Protokollierung.LogFatal(),LogError(),LogWarn(),LogInfo(),LogDebug(),LogVerbose(): Loglevel-spezifische Erzeugungsmethoden, die jeweils ein temporäresLogStream-Objekt zurückgeben.WithLevel(): Parametrisierte Erzeugung einesLogStreamfür dynamische Loglevel.
«aapAPI, aapNativeInterface» Log and Trace::LogStream(ara::log::LogStream):- Stream-Pufferobjekt zur Verkettung von Lognachrichten-Fragmenten.
operator<<(): Überladener Streaming-Operator für Basistypen, Strings und Formatierer.WithLocation(): Injektion von Quellcode-Metadaten (Dateiname, Zeilennummer, Funktionsname).Flush(): Expliziter Flush zur Übergabe der serialisierten Lognachricht an den Cluster-Daemon.
3. Dynamisches Verhalten & Sequenzablauf
- Initialisierung: Die
Adaptive Applicationfordert viaara::log::CreateLogger(ctxId, ctxDesc)eineLogger-Instanz vom Functional Cluster an. - Pre-Filtering (optional/implizit): Prüfung mittels
IsEnabled(), um unnötige Formatierungs- und Auswertungs-Overheads bei deaktivierter Severity zu vermeiden. - Stream-Instanziierung (RAII-Muster):
- Aufruf von z. B.
logger.LogInfo()erzeugt ein stackallokiertes, kurzlebigesLogStream-Objekt.
- Aufruf von z. B.
- Payload-Zusammenstellung:
- Über mehrfache
operator<<-Aufrufe werden Nutzdaten und Formatierer (HexFormat(),BinFormat()) sequenziell in den internen Puffer serialisiert. WithLocation()annotiert Dateiname und Zeile.
- Über mehrfache
- Abschluss & Übertragung:
- Am Ende des Statements (Zerstörung des temporären
LogStream-Objekts am Sequence Point) oder bei explizitemFlush()wird die Lognachricht finalisiert. - Der Puffer wird atomar über IPC/Shared Memory an den Logging-Daemon übergeben und je nach Plattform-Konfiguration in den DLT-Stream (Diagnostic Log and Trace, IEEE 802.3 / SOME/IP-Konsolen) oder Filesystem-Ringspeicher eingesteuert.
- Am Ende des Statements (Zerstörung des temporären
4. Normative Relevanz & Entwickler-Hinweise
- Echtzeitfähigkeit & Allokationsverbot:
LogStreamarbeitet im Streaming-Pfad mit vorallokierten, thread-lokalen Stack-/Ringpuffern. Dynamische Heap-Allokationen (new/malloc) sind im Aufruf vonoperator<<gemäß Autosar Adaptive Richtlinien strikt untersagt. - RAII-Semantik: Die atomare Dispatch-Garantie einer Lognachricht hängt an der Lebensdauer des temporären
LogStream. Das Caching vonLogStream-Objekten über Anweisungsblöcke hinweg ist unzulässig, da der Flush an den Destruktor gekoppelt ist. - API-Vertrag (
ara::log): Reine In-Process-C++-Schnittstelle. Es ist kein ARA-COM-Manifest erforderlich; die Bindung an den Logging-Daemon erfolgt über plattformspezifische IPC-Mechanismen des Runtime-Clusters. - DLT-Konformität: Lognachrichten werden intern in DLT-Standard-Frames überführt (Standardized Header, Extended Header mit Session-ID, App-ID, Context-ID und Payload). Die IDs müssen im AUTOSAR-Modell (Execution Management / Application Manifest) konsistent definiert sein.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.