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()アプリケーションでメソッドを1回だけ呼び出す必要があります。

于 2012-07-14T11:20:53.710 に答える