में रनटाइम के दौरान लॉगफाइल जोड़ें/हटाएं मैं एक छोटी फ़ाइल रूपांतरण उपयोगिता लिख रहा हूं। निर्देशिका में गिराए जाने पर फ़ाइलें स्वचालित रूप से परिवर्तित हो जाती हैं।एनएलओजी
मैं लॉगिंग के लिए एनएलओजी का उपयोग कर रहा हूं। एक केंद्रीय लॉग फ़ाइल के अलावा जो NLog.conf (और जो सभी संदेशों को उत्पन्न करता है) का उपयोग करके कॉन्फ़िगर किया गया है, मैं प्रत्येक इनपुट फ़ाइल के लिए एक अतिरिक्त लॉग फ़ाइल बनाना चाहता हूं, जिसमें एक समान नाम है और इसमें सभी लॉग संदेश शामिल हैं रूपांतरण प्रक्रिया।
दुर्भाग्य से मैं यह पता लगाने में असमर्थ हूं कि रनटाइम के दौरान उचित नियम के साथ एक साथ नया फ़ाइल लक्ष्य कैसे जोड़ना है। मैं रूपांतरण प्रक्रिया के दौरान नई लॉग फ़ाइल में लिखने के लिए सभी Logger
ऑब्जेक्ट्स चाहता हूं।
मैं
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
की तरह कुछ करने की कोशिश की लेकिन कोई लॉग फ़ाइल बनाया गया था।
मैंने क्या गलत किया? कोई उपाय?
पुनर्निर्धारण के साथ लाइन बहुत महत्वपूर्ण है: LogManager.Configuration = config; – habakuk
** पुन: असाइनमेंट के साथ लाइन बहुत महत्वपूर्ण है: LogManager.Configuration = config; ** यह सच है क्योंकि एनएलओजी ने कॉन्फ़िगरेशन प्रॉपर्टी के लिए गेटर्स और सेटर्स लिखे हैं। यह सुंदर नहीं है, लेकिन इसे एक बदली वस्तु के साथ फिर से सेट करना होगा; आप सीधे संपत्ति नहीं बदल सकते हैं। – zshift
मुझे इसे काम करने के लिए अंत में लॉगर चर को पुन: असाइन करना पड़ा: लॉगर = LogManager.GetCurrentClassLogger(); – Henry