3

DALを備えたライブラリがあります。その中で、CastleWindsorを使用し、ロギングを構成しています。

DALはWCFサービスによって使用されます。WCFサービスには、log4net.configがあります。

<log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <bufferSize value="100" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="data source=MYMACHINE\SQLEXPRESS;initial catalog=GEMS;integrated security=true;persist security info=True" />
        <commandText value="INSERT INTO Application_Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
        <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%thread" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="2000" />
            <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="AdoNetAppender" />
    </root>
</log4net>

私は実際にWCFサービスを使用するアプリでこの正確な構成ファイルを使用しており、(Castle Windsor w / Log4netを使用して)問題なく動作するので、問題ないと確信しています。log4net.configファイルはWCFプロジェクトのルートにあり、IISのWCFサービスのルートに展開されます。

私のDALには、LoggerInstallerがあります。

public class LoggerInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.AddFacility<LoggingFacility>(f => f.UseLog4Net());
    }
}

サンプルクラスでは、次のようなプロパティがあります。

public ILogger Logger { get; set; }

Loggerの値はCastleによって有効なロガーに設定されていますが、WCFサービスを使用するメインアプリケーションを除いて、DBにログが記録されることはありません。

何がめちゃくちゃになっているのかわからない。

4

1 に答える 1

2

たぶんあなたの設定ファイルを指定してみてください:

f => f.UseLog4Net(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
于 2012-12-20T14:28:55.080 に答える