同様の質問を見つけましたが、どれもうまくいきませんでした。
Log4Net はログ データベースに何も書き込まず、エラーを見つける方法がよくわかりません。
これは私の設定ファイルです:
<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=sqlServer;initial catalog=Logging;integrated security=false;persist security info=True;User ID=logUser;Password=logPassword" />
<commandText value="INSERT INTO dbo.myLogTable ([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>
</log4net>
実際には、Apache ページにある SQL Server の例の完全なコピーです。接続文字列のみを変更しました。接続自体は正常に機能するはずです。接続文字列をSqlConnection
.
これは、ログ オブジェクトを作成して構成を読み込む方法です。
public static class LogFactory
{
public const string Log4NetConfig = "log4net.config";
public static ILog GetLogger()
{
var uri = new Uri(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase), Log4NetConfig));
var configFile = new FileInfo(Path.GetFullPath(uri.LocalPath));
XmlConfigurator.ConfigureAndWatch(configFile);
ILog log = LogManager.GetLogger(typeof(LogFactory));
return log;
}
}
ロギング自体:
private static readonly ILog Log = LogFactory.GetLogger();
[...]
Log.Info("Test 123");
構成を通常の「ファイルへのログ」構成に置き換えると、ログは正常に機能するため、エラーは構成のどこかにあるはずですが、構成はホームページのデフォルトの例です。
どこかにエラーが表示されますか?