1

次のように、web.config にログ ファイルの場所があります。

<appSettings>
    <add key="LogPath" value="D:\Service\"/>
</appSettings>

次のように、web.configにlog4net構成があります

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="%property{LogName}"/>
        <appendToFile value="true"/>
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="10"/>
        <maximumFileSize value="10MB"/>
        <staticLogFileName value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%m%n"/>
        </layout>
    </appender>
    <root>
        <level value="DEBUG"/>
        <appender-ref ref="RollingLogFileAppender"/>
    </root>
</log4net>

次のように Service クラスの先頭で GetLogger を初期化しました

Private Shared ReadOnly log As ILog = LogManager.GetLogger(GetType(Service))

次のように LogName の GlobalContext プロパティを作成しました

log4net.GlobalContext.Properties("LogName") = ConfigurationManager.AppSettings("LogPath") & "Service." & Format(Now, "ddMMyyyy") & ".txt"

ロギングは次のように log.Info で行われます

log.Info(strComments)

このシナリオでは、ログ ファイルは Project フォルダーの下に「null」として作成され、詳細が記録されます。

上記のコードに従って、ログの場所を「D:\Service\Service.30082012.txt」にします。

私は何が欠けていますか?私を助けてください。

4

2 に答える 2

1

通常、web.config ファイルを変更するとき に、 web アプリケーションの再起動を回避するために、log4net 構成を web.config から分離します ( web.config が変更されたときに ASP.NET アプリケーションが再起動するのを防ぐにはどうすればよいですか? )。

通常、これらの設定をすべて保存するための log4net.config ファイルがあり、構成ファイルの変更を監視するように構成します。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

また、変更が簡単でない限り、log4net構成の外にログファイルディレクトリを保存する理由もよくわかりません。私は通常、次のように log4net 構成にパスを保持します。

<appender name="File" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/CompanyName/Logs/ApplicationName/%date{MM-dd-yyyy} - Whatever.log" />
于 2012-08-30T23:21:07.703 に答える
0

LogName プロパティを設定する前に、ログ コマンドないことを確認してください。

また、ログ名が正しく設定されていることも確認してください。

 ConfigurationManager.AppSettings("LogPath") & "Service." & Format(Now, "ddMMyyyy") & ".txt" 

nullに評価されていません

于 2012-08-30T08:44:29.773 に答える