2012-06-25 4 views
6

Ich werde alle Aktionen verfolgen, die in den Diensten aufgetreten sind, die vom Unity Container als Log-in-Dateisystem verwaltet werden. Ich vermute, ich könnte eine Schnittstelle namens IService definieren und alle anderen Schnittstellen oder Implementierungen sollten von ihm erben. Auf der anderen Seite möchte ich ein benutzerdefiniertes Abhörverhalten oder Call-Handler entwickeln, um die Logs in Dateien zu speichern.Wie konfiguriert man einen Logging Interceptor für alle registrierten Typen in Unity?

Leider fand ich, dass es nicht für mich arbeiten, indem sie diese Codes

IUnityContainer unity = new UnityContainer(); 

//Interception 
unity.AddNewExtension<Interception>(); 
Interception interception = unity.Configure<Interception>(); 
unity.RegisterType<IService>(
    new DefaultInterceptor(new InterfaceInterceptor()), 
    new DefaultInterceptionBehavior(new LoggingBehavior())); 

string[] configFiles = Directory.GetFiles(".", "*.config"); 
foreach (string configFile in configFiles) 
{ 
    var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; 
    System.Configuration.Configuration configuration = 
     ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
     ConfigurationUserLevel.None); 
    var unitySection = (UnityConfigurationSection) 
     configuration.GetSection("unity"); 
    unity = unitySection.Configure(unity); 
} 

IGateway imapGW = unity.Resolve<IGateway>("ImapGateway"); 

Gibt es ein Missverständnis für mich Abfangjäger in Unity zu benutzen? Wie kann ich mit diesem Problem umgehen, um alles automatisch zu protokollieren, ohne den Interceptor für jeden Dienst zu konfigurieren?

Antwort

3

Es gibt viele Möglichkeiten, den Logger zu implementieren. Vor langer Zeit schrieb ich einen Artikel darüber, wie Abfangjäger einzurichten:

http://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity-2/

für die Protokollierung Sie Debug.Write und konfigurieren Tracelisteners verwenden könnten. Oder Sie können auch die Enterprise Library oder eine beliebige andere Protokollbibliothek verwenden.

Mit freundlichen Grüßen, Herber