यह 650694 जैसा है लेकिन कोई जवाब स्वीकार नहीं किया गया था, मुझे उन सुझावों में से कोई भी काम नहीं मिल सकता है, और मुझे संदेह है कि मैं थोड़ा अलग स्थिति में हो सकता हूं।log4net लॉगिंग स्तर को प्रोग्रामेटिक रूप से बदलें
मैं log4net.Config.XmlConfigurator.Configure() को कॉल कर रहा हूं। लेकिन कार्यक्रम में उस बिंदु के बाद, मैं लॉगिंग थ्रेसहोल्ड को केवल रनटाइम पर ज्ञात मान पर बदलना चाहता हूं।
अन्य प्रश्न से, मैं करने की कोशिश की:
((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Error;
और:
var appender = new log4net.Appender.ColoredConsoleAppender();
appender.Layout = new log4net.Layout.PatternLayout(@"%date %-5level %message%newline");
appender.Threshold = log4net.Core.Level.Error;
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);
लेकिन न तो एक कोई असर लगता है: मैं अभी भी डीबग दिखाई दे रही है और जानकारी कंसोल पर बयान प्रवेश करने ।
मेरे कूबड़ कि मैं एक नया appender, जो appender एक्सएमएल config (जो बताता है यह डीबग स्तर संदेशों मुद्रित करने के लिए) में घोषित पर कोई प्रभाव नहीं जोड़ रहा है, लेकिन मैं इस बात के लिए कोई सबूत अभी तक नहीं है ।
मैं थोड़ी देर के लिए log4net एपीआई के माध्यम से खुदाई कर रहा हूं, और मैं इसे देख नहीं रहा हूं। क्या मुझे कुछ आसान याद आ रहा है?
लॉगर के स्तर को "त्रुटि" में सेट करना उस लॉगजर से लॉग इन होने से किसी भी डीबग या जानकारी आउटपुट को रोकना चाहिए। आप लॉगर के लिए DEBUG और INFO देख रहे हैं जिसका लॉगिंग स्तर आप बदल रहे हैं? – Eddie
यह एक अच्छा मुद्दा है: # 1 शायद केवल एक लॉगर के लिए थ्रेसहोल्ड सेट करता है। लेकिन # 2 ऐसा लगता है कि यह वैश्विक होना चाहिए। – Ken
हां # 1 केवल एक ही लॉगर इंस्टेंस के लिए थ्रेसहोल्ड सेट करता है जिसे आप बदल रहे हैं, साथ ही पदानुक्रम में इसके नीचे कोई भी लॉगर जो स्पष्ट रूप से सेट स्तर नहीं है। – Eddie