当用户

时间:2016-10-25 12:51:37

标签: c# app-config

我目前有一个app.config,它保存了我的Log4Net配置的设置。这里的问题是如果用户删除了exe.config,那么由于没有配置记录器,它不会记录任何内容。

除了记录器之外,我还需要在配置中设置其他东西(将来)。所以我想要做的只是将默认的exe.config写入它应该的位置,但我找不到正确的方法。

<?xml version="1.0"?>
<configuration>
  <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

  <log4net>
      <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="..\Logging\ModuleSimulator.txt"/>
          <appendToFile value="false"/>
          <maxSizeRollBackups value="10"/>
          <maximumFileSize value="10000000"/>
          <staticLogFileName value="false"/>
          <rollingStyle value="Size"/>
          <PreserveLogFileNameExtension value="true"/>
          <layout type="log4net.Layout.PatternLayout">
              <header value="[Header]&#xD;&#xA;" />
              <footer value="[Footer]&#xD;&#xA;" />
              <conversionPattern value="%date [%2thread] %-5level %logger - %message%newline%exception"/>
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
              <LevelMin value="DEBUG"/>
              <AcceptOnMatch value="true"/>
          </filter>
      </appender>

      <root>
          <appender-ref ref="RollingLogFileAppender"/>
      </root>
  </log4net>

  <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
  </startup>
</configuration>

我是否应该在代码中保存此文本并将其保存为文档,如果我发现原件已消失?肯定有一个更好的方法。

我知道如何在代码中配置我的记录器,所以我需要的是一种将其保存在新配置文件中的方法:Can you configure log4net in code instead of using a config file?

我检测到没有配置文件时:

var exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

if (exeConfiguration.HasFile == false)
{
    // TODO: create the config in code
    // Save the config in code
}

我需要的是一种在代码中保存新配置的方法,以便创建类似的文件。我想知道是否还有其他方法,而不是将整个xml文件保存在字符串(或资源)中,然后在我注意到配置文件丢失时将其写为文件。

我希望找到一种方法来使用ConfigurationManager或其他.Net组件在启动时配置我的应用程序,而不是使用它来执行以下操作:Configuration.Save(); 我将接受在重新启动应用程序之前不会使用此新创建的文件中的所有更改,这不是问题。

1 个答案:

答案 0 :(得分:0)

始终保留备份文件,并在用户删除生产配置时使用该文件。