2016-10-25 14 views
1

私は現在Log4Net構成の設定を保持するapp.configを持っています。ここで問題となるのは、ユーザーがexe.configを削除すると、ロガーが設定されていないため何もログに記録されません。ユーザーが古いものを削除したときに新しいapp.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?

私は、configファイルが存在しないときに検出:

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(); この新しく作成されたファイルのすべての変更は、アプリケーションが再起動されるまで使用されないことに同意します。これは問題ではありません。

+0

ユーザーはApp.Configファイルをどのように削除できますか? –

+0

@viveknuna彼はファイルエクスプローラを使って実行パスに行き、ファイルを選択して削除を押します。 – Vincent

+0

しかしそれは許可されてはならない –

答えて

0

バックアップファイルを常に保存し、プロダクション設定がユーザーによって削除されたときにそのファイルを使用します。

+0

これは、同じ問題を削除することができる2番目のファイルを必要とします。 – Vincent

+1

あなたが何をしても、ユーザーは削除します。何もしない –

+1

@GhostDeveloper面白い答え:D:D:Pしかし、彼の問題を解決してください – Rajput

関連する問題