2009-06-08 4 views
15

をAPPDATAファイルのパスを指定するには、#とCの私はlog4netのを使用していますどのようにapp.configファイルで

これは私のapp.configをですこれまでのファイルで、softphone.logという名前を指定しました。 Hoewver、私は各ユーザがユーザ名に応じて異なるパスを持つので、ファイルへの完全なパスを指定する方法がわかりません。私のソースコードで

<log4net> 
    <logger name="default"> 
     <level value="DEBUG"/> 
    </logger> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="softphone.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackup value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 
    </log4net> 

私は、次の手順を実行して、パスを取得することができます:

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

私はハード上のパスをコード化された場合は、私は私のApp.configファイルに上記を使用してすることはできません私のシステムのパスは次のようになります。

C:\Documents and Settings\John\Application Data 

ただし、これはクライアントごとに異なります。では、app.configファイルでこれを行う方法はありますか?

任意の提案のための多くのおかげで、

+0

[log4netの共通アプリケーションデータフォルダを指定する方法は?](http://stackoverflow.com/questions/468989/how-to-specify-common-application-data-folder-for-log4net) –

答えて

17

私はあなたがやりたいことができると信じていないあなたがいることを、独自のトークンを追加することができるように、app.configファイルのカスタム解析領域のための方法がありますあなたは正しい値で置き換えることができますが、log4netセクションの中でどのように動作するかわかりません。

ただし、config内でlog4net用に設定されているものはすべて、コードで設定することもできます。私はあなたが最良のオプションは、アプリケーションの開始直後にコード内のアペンダーのプロパティを設定することだと思う。


ああ、私の無知を明らかにした気にはなりません。

<file value="${APPDATA}\log-file.txt" /> 

あなたがやりたいだろう:herehereから、これに似た何かがあることが表示されます。私はこれを自分自身でテストしていないので、最初の回答も残しておきます - しかし、あなたはそれに幸運があるかどうかを知ることに興味があります。

+1

うれしいことに編集しました;)環境変数に何らかの形で到達する方法は常にあります。 –

+0

私はそれを試して結果を報告します。ありがとう。 – ant2009

+0

ちょうどこれは私のために大丈夫だと言うと、私は瞬間にXPの下でそれをテストしましたが、私はそれがVistaでも動作すると仮定します。 –

関連する問題