Wie legen Sie den Benutzernamen in die MDC für die gesamte web-Anfrage
Ich bin versucht, einen Mapped Diagnostic Context hinzufügen den Benutzernamen des Benutzers eine Anforderung der Seite, um alle relevanten logging-Anweisungen. Allerdings habe ich versucht drei verschiedene Möglichkeiten, um es Arbeit ohne Erfolg:
- Drücken der username in die MDC nach der Anmeldung und Beseitigung nach logout. Diese Methode endet das mischen bis die logging-Anweisung kam von dem user.
- Mit einem ServletFilter schieben Sie den Benutzernamen in das MDC auf jeder Seite laden und Knall ihn wieder ab, wie die Anfrage endet. Dies nur Fänge, einige der Daten und nur im Frühjahr security-layer.
- Mit einem AOP @Um Abfangjäger vor allem die Controller-Methoden Wohnung heraus hat nicht funktioniert.
Hat jemand irgendwelche Vorschläge auf, wie dies geschehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was waren die Probleme mit dem MDC? Was meinst du mit Spring security layer? Ich habe diesen Ansatz in einer web-Anwendung und es funktionierte gut. Da MDC-gebunden-thread, alle logging-Anweisungen aus diesem thread Benutzername festgelegt, d.h. service-und repository-Schicht als gut.
Natürlich, wenn einige user werden Ihnen die Verwendung von threads (z.B. servlet 3.0 asynchrone Verarbeitung, JMS-Listener, der Vollzieher), müssen Sie die andere Art der Injektion Benutzername MDC in gepoolten threads.
Siehe auch meine Antwort hier.