Logging

Prof. Dr. Robin Nunkesser

Agentisches Beispiel: Logging

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md

Exakter Prompt

Erstelle ein agent-generated example für Logging (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal. Wende MVVM mit CommunityToolkit.Mvvm und Unit Tests mit MSTest an.
Entscheide anhand der Architektur-Entscheidungstabelle aus den Instructions, welche weiteren Muster (Core-Projekt, Architekturschichten) das Konzept rechtfertigt — verwende sie, wenn dieselbe Komplexität in einem produktiven Einsatz diese Strukturen erfordern würde.
Lies zuerst die Instructions, ermittle den Foliensatz, dokumentiere Instructions + Prompt dort, vergleiche mit manuellem Beispiel, verifiziere MacCatalyst Build mit workaround zum mismatch des workloads mit der xcode version.

Architekturentscheidung (gemäß Tabelle)

Aspekt Entscheidung Begründung
Feature-Scope Minimal (eine loggende Aktion) Fokus bleibt auf Logging und Testbarkeit
MVVM Ja Datenbindung + Commands für UI-Interaktion
Unit Tests Ja (MSTest) Logging- und Lifecycle-Verhalten direkt testbar
Core-Projekt + Interfaces Nein Keine Persistenz/REST/Auth-ähnliche Komplexität
Architekturschichten Nein Für Logging-Demo nicht erforderlich

Ergebnis (agent-generated)

  • Neue MVVM-Schicht in LoggingRecipe.ViewModels
  • CommunityToolkit.Mvvm mit Message, LastLog, LifecycleState und LogInfoCommand
  • UI-Code-Behind reduziert auf Lifecycle-Hooks
  • DI-Verdrahtung von ViewModel und MainPage in MauiProgram.cs
  • 3 MSTest-Tests (Command, CanExecute, Lifecycle + Debug-Logs)
  • MacCatalyst-Workaround aktiv: ValidateXcodeVersion=false

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Kernfunktion Counter-Button Logging-Command mit Ergebnisanzeige
MVVM nein ja
Logger-Nutzung nur App-Startlog App + ViewModel-Logging
Unit Tests keine 3 MSTest-Tests
Lifecycle-Transparenz nein ja (LifecycleState)

Fazit: Das agent-generated Beispiel ist für fortgeschrittene Studierende didaktisch besser geeignet, weil Logging, MVVM und Testbarkeit gemeinsam sichtbar sind.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test LoggingRecipe.Tests/LoggingRecipe.Tests.csproj → 3/3 erfolgreich
  • MacCatalyst-Build: dotnet build LoggingRecipe/LoggingRecipe.csproj -f net10.0-maccatalyst -p:ValidateXcodeVersion=false → erfolgreich