La registrazione è sempre stata un incubo per me! Ora devo implementarlo di nuovo per un sistema proxy. In questa applicazione proxy, alcuni sistemi richiedono al sistema proxy di chiamare alcuni altri servizi. Quello che devo registrare è
- Tempo richiesta
- Richiedente IP
- Richiedi parametri come XML
- Nome servizio richiesto
- Metodo di servizio richiesto
- Tempo di risposta
- Dati di risposta come XML
- Messaggio di risposta (se si verifica un'eccezione, verrà registrato come messaggio)
Ho considerato di aggiungere due righe ai miei metodi:
// Log Request
Task.Factory.StartNew(() => Logger.Log(RequestParameters.ToXML(),Assembly.GetCallingAssembly().FullName, MethodBase.GetCurrentMethod().Name, DateTime.Now));
// Invoke requested service and get response
// Log Response
Task.Factory.StartNew(() => Logger.Log(Response.ToXML(), DateTime.Now));
Voglio anche registrare le transazioni nidificate.
Si supponga che una transazione contenga una richiesta e una risposta. Una transazione può contenere molte altre transazioni interne. Quando ricevo una richiesta, dovrei registrare una transazione e inserire una richiesta per questo, in seguito, quando la risposta ricevuta, dovrei aggiornare la risposta della transazione. Tieni presente che sto cercando di memorizzare la relazione di richiesta e risposta per un migliore monitoraggio.
Come posso aggiungere tranquillamente questa procedura di registrazione ai metodi? Voglio limitare gli sviluppatori a implementare questi sistemi di registrazione in tutti i metodi, alcune cose come l'interfaccia o l'ereditarietà per il corpo del metodo sono richieste. Posso farlo per attributi? Allora come?