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 文件时 ,我将 log4net 配置与 web.config 分开以避免 Web 应用程序重新启动(如何防止 ASP.NET 应用程序在 web.config 被修改时重新启动? )。

我通常只有一个 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 回答