13

ASP.NET MVC3 アプリケーションから Log4Net を使用しています。すべて正常に動作しますが、ログ ファイルでアプリケーション プールの ID ではなく現在のユーザー名を確認したいと考えています。これは、使用しているアペンダー構成です。

<log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
      <threshold value="ALL" />
      <immediateFlush>true</immediateFlush>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <encoding value="utf-8" />
      <file value="C:\Logs\MyLogs.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="30" />
      <maximumFileSize value="25MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%property{log4net:HostName}] - %username%newline%utcdate - %-5level - %message%newline" />
      </layout>
    </appender>
    <root>
      <priority value="ALL" />
      <appender-ref ref="FileAppender" />
    </root>
</log4net>

したがって、プロパティのように見えます:%usernameの値を取得しています:

WindowsIdentity.GetCurrent().Name

必要なものの代わりに:HttpContext.Current.User

カスタム プロパティや追加の log4net 派生クラスを作成せずに、web.config でこれを簡単に解決する方法について何か考えはありますか? 可能であれば、それ以外の場合は、カスタムプロパティがそれと一緒に暮らすことができる唯一の方法であると思います:)ありがとう!

4

1 に答える 1

20

で置き換える必要があります%username%identityそれは私の現在のプロジェクトで私のために働いています。

この優れたチュートリアルでlog4netの詳細を学ぶことができます

于 2012-07-18T12:34:27.403 に答える