2014-03-05 57 views
0

我试图编辑配置文件programmaticly日志记录级别。如何编辑n日志配置文件编程

foreach (var rule in LogManager.Configuration.LoggingRules) 
    { 


       if (m_loginglevelcomboBox.SelectedItem.ToString() == "Debug") 
       { 
        rule.EnableLoggingForLevel(LogLevel.Debug); 
       } 
       else 
       { 
        rule.EnableLoggingForLevel(LogLevel.Info); 

       } 
    } 

      //LogManager.ReconfigExistingLoggers(); 

我对调用Reconfig不感兴趣,因为这些更改会影响应用程序的运行。 我希望在应用程序重新启动时进行更改。所以我需要它来编辑配置文件。

我不能使用xDocument,因为linq与我的.net版本不兼容 所以如何编辑minlevel规则来调试/信息?

+0

朱迪思,你忘了问一个问题。这里有什么问题?你不能修复什么? – spender

+0

好吧会更新我的问题。 – Nisha

+0

如果你想你的程序重新进行分配,安装在“程序文件”,你需要的配置复制到标准的用户有写权限,并得到n日志来进行阅读的位置。如果配置只是在“程序文件”中的.exe文件旁边,则应该认为它是只读的。 – spender

回答

1

我用这个编辑日志记录级别。我希望如果有人绊倒,这会有所帮助。如果有人认为这是一个坏主意,请让我知道。

  string configFilename = GetConfigFilePath(); 


      XmlDocument doc = new XmlDocument(); 
      doc.Load(configFilename); 

      XmlNode documentElement = doc.DocumentElement; 

      foreach (XmlNode node in documentElement.ChildNodes) 
      { 
       if (ruleDocumentNodeName.Equals(node.Name)) 
       { 
        foreach (XmlNode childNode in node.ChildNodes) 
        { 
         if (loggerDocumentNodeName.Equals(childNode.Name)) 
         { 
          XmlAttribute idAttribute = childNode.Attributes[minLevelAttributeName]; 
          string currentValue = minLogingLevelComboBox.SelectedItem.ToString(); 
          idAttribute.Value = currentValue; 
          doc.Save(configFilename); 
          MinLoggingLevelChanged = true; 
         } 
        } 
       } 
      }