[英]Log4net with Entity Framework 5 and MVC4
所以我開始這個新項目,並希望使用Log4net登錄數據庫。 我正在使用EF進行其他事情並且連接正常。 出於某種原因,L4N沒有記錄任何內容,但沒有拋出任何錯誤。 只是想知道我可能缺少哪些步驟,希望有人可以指出。 我需要以某種方式“保存”到數據庫嗎? Thanx提前這么多。
我的web.config:
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.EntityClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=myserver;initial catalog=Reporting;integrated security=false;persist security info=True;User ID=myid;Password=mypassword" />
<commandText value="INSERT INTO [myschema].[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="LogFileAppender" />
</root>
和我的控制器:
...
using log4net;
using System.Reflection;
namespace MyNames.Controllers
{
public class ClientController : Controller
{
ReportingEntities db = new ReportingEntities();
private readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public ActionResult Index()
{
this.log.Debug("Sample message to log to Db");
return View();
}
}
}
編輯:所以我做了mods建議gorilly但仍然無法正常工作。 剛碰巧檢查輸出窗口,即使我啟用了調試它仍然顯示這個。 。 從這里嘗試了調試建議,但沒有拋出任何錯誤。
從我的log4net內部調試文件:
log4net: Assembly [DotNetOpenAuth.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246] Loaded From [C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\bf082a83\4eb20e9a\assembly\dl3\c62a3103\e01aa9f6_fda1cf01\DotNetOpenAuth.Core.dll]
log4net: Assembly [DotNetOpenAuth.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246] does not have a RepositoryAttribute specified.
log4net: Assembly [DotNetOpenAuth.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Shutdown called on Hierarchy [log4net-default-repository]
將此行添加到Global.asax.cs(在Application_Start()中):
log4net.Config.XmlConfigurator.Configure();
此外,您可以打開log4net調試,通過將此行添加到<appSettings>
下的Web.config來幫助您找出出錯的地方:
編輯:下面有value="false"
,但應該是value="true"
。
<add key="log4net.Internal.Debug" value="true"/>
編輯:
您可以通過將以下內容添加到Web.config中來將log4net的內部調試日志記錄發送到文件中(請參閱此處的官方說明):
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\mylogdirectory\log4net_debug.txt" />
</listeners>
</trace>
</system.diagnostics>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.