हमने निनजा संस्करण 2 को हमारे आईओसी कंटेनर के रूप में कॉन्फ़्रेंस नामकरण के समाधान के साथ विस्तार के साथ विस्तार करना शुरू कर दिया है। हम लॉगिंग के लिए लॉग 4नेट का भी उपयोग कर रहे हैं।लॉग निंजा हल किए गए निर्भरता अनुप्रयोग स्टार्ट-अप
मुझे जो चाहिए वह निनजेक्ट के लिए उन सभी निर्भरताओं को लॉग इन करना है जो उन्हें मिले हैं और उन्हें हल करने के लिए, विशेष रूप से एप्लिकेशन स्टार्ट-अप पर क्या हल होगा।
मुझे लॉगिंग एक्सटेंशन मिला है, लेकिन इसे पाने के लिए इसका उपयोग करने के तरीके पर दस्तावेज़ या उदाहरण नहीं मिल सकते हैं।
संपादित करें:
के बाद से इसे यहाँ अनुरोध किया गया था वर्ग, जो स्टार्टअप पर डिफ़ॉल्ट बाइंडिंग लॉग करता है, log4net
सार्वजनिक वर्ग DefaultBindingGeneratorWithLogging उपयोग कर रहा है: IBindingGenerator { निजी केवल पढ़ने के लिए IKernel गिरी;
/// <summary>
/// Initializes a new instance of the <see cref="DefaultBindingGeneratorWithLogging"/> class.
/// </summary>
/// <param name="kernel">The kernel.</param>
public DefaultBindingGeneratorWithLogging(IKernel kernel)
{
this.kernel = kernel;
}
/// <summary>
/// Creates the bindings for a type.
/// </summary>
/// <param name="type">The type for which the bindings are created.</param>
/// <param name="bindingRoot">The binding root that is used to create the bindings.</param>
/// <returns>
/// The syntaxes for the created bindings to configure more options.
/// </returns>
public IEnumerable<IBindingWhenInNamedWithOrOnSyntax<object>> CreateBindings(Type type, IBindingRoot bindingRoot)
{
if (type.IsInterface || type.IsAbstract)
{
yield break;
}
Type interfaceForType = type.GetInterface("I" + type.Name, false);
if (interfaceForType == null)
{
yield break;
}
var log = kernel.Get<ILog>();
if (!(kernel.GetBindings(interfaceForType).Any()))
{
bindingRoot.Bind(interfaceForType).To(type).InTransientScope();
if (log.IsInfoEnabled && !String.IsNullOrWhiteSpace(interfaceForType.FullName))
{
log.InfoFormat("Mapping {0} -> {1}", type.FullName, interfaceForType.FullName);
}
}
else
{
log.InfoFormat("Didn't map {0} -> {1} mapping already exists", type.FullName, interfaceForType.FullName);
}
}
}
नोट: यह बाइंडिंग लॉग जब कभी वे सक्रिय हो जाते हैं/निष्क्रिय किया गया। स्टार्टअप पर उन सभी को लॉगिंग करने से थोड़ा अलग, लेकिन शायद उपयोगी? – rcravens
निश्चित रूप से उपयोगी। मैं अपने स्वयं के वर्ग को लॉग इन करने के लिए कॉन्फ़्रेंस आधारित बाइंडिंग लॉग इन करने के लिए कुछ कोड लेकर आया था क्योंकि वे पाए गए थे लेकिन मैं सक्रियण/निष्क्रियता लॉग करना भी चाहूंगा ताकि यह बढ़िया हो। – Mant101
@ Mant101, अगर आप सम्मेलन आधारित बाइंडिंग के लिए कोड साझा कर सकते हैं जो पूर्णता के लिए लॉगिंग कर रहा है जो इस प्रश्न के लिए बहुत अच्छा और सहायक होगा। – user3141326