0

我有这个作为我的配置文件:

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>

    <log4net>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <file value="c:\\logging\\EwsSearch.log" />
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <appendToFile value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="-1" />
            <maximumFileSize value="100KB" />
            <staticLogFileName value="true" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
            </layout>
        </appender>
    </log4net>

    <root>
        <level value="ERROR" />
        <appender-ref ref="RollingFileAppender" />
    </root>

</configuration>

然后我在我的 C# 代码中有:

public class VsiEWSSearch
{
    private static readonly ILog logger = LogManager.GetLogger(typeof(VsiEWSSearch));

    public EWSResponse PdeProcessInquiry(int BusinessLineCode, int ClientCaseId, string callingApp)
    {
        XmlConfigurator.Configure(new System.IO.FileInfo("VSI.EWSSearch.config"));

        logger.Error("This is an error");

即使我调整了目录的权限,也不会生成日志文件。怎么了?

4

1 回答 1

1

root节点必须在节点内log4net。根据配置文件的类型,您需要进行一些进一步的调整:

  • 如果您有 log4net 的独立配置文件,则需要删除configurationandconfigSections节点。我还认为 log4net 不会找到您的配置文件,除非您指定完整路径(您当然可以这样做,而无需在应用程序中硬编码任何路径)。

  • 如果您只是简单地使用 app.config,那么您不需要进一步修改,但您需要在XmlConfigurator.Configure()不带任何参数的情况下调用该方法。

注意:您应该XmlConfigurator.Configure()在应用程序中只调用一次该方法。

于 2012-07-14T11:20:53.710 回答