log4net的实体框架5和MVC4 [英] Log4net with Entity Framework 5 and MVC4

查看:167
本文介绍了log4net的实体框架5和MVC4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我开始这个新项目,并希望使用log4net的记录到数据库。我使用EF其他东西和它连接的罚款。出于某种原因,L4N不记录任何东西,但不扔任何错误。只是想知道哪一步(S)我可能会丢失,希望有人能指出来。我是否需要拯救的分贝不知何故?感谢名单这么多提前。

我的web.config:

 <&log4net的GT;
<追加程序名称=AdoNetAppenderTYPE =log4net.Appender.AdoNetAppender>
  < BUFFERSIZE值=100/>
  < connectionType值=System.Data.EntityClient.SqlConnection,System.Data这,版本= 1.0.3300.0,文化=中性公钥= b77a5c561934e089/>
  <连接字符串值=数据源= MYSERVER;初始目录=报告;集成安全性= FALSE;坚持安全信息= TRUE;用户ID =本身份识别码;密码=输入mypassword/>
  < CommandText中值=INSERT INTO [MYSCHEMA] [登录]([日期],[主题],[等级],[记录器],[信息],[例外])VALUES(@log_date,@thread,@log_level ,@Logger,@message,抛出)/>
  <&参数GT;
    <参数名称值=@ LOG_DATE/>
    < D​​BTYPE值=日期时间/>
    <布局类型=log4net.Layout.RawTimeStampLayout/>
  < /参数>
  <&参数GT;
    <参数名称值=@丝/>
    < D​​BTYPE值=字符串/>
    <大小值=255/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%线程/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@ LOG_LEVEL/>
    < D​​BTYPE值=字符串/>
    <大小值=50/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%的水平/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@记录器/>
    < D​​BTYPE值=字符串/>
    <大小值=255/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%记录器/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@消息/>
    < D​​BTYPE值=字符串/>
    <大小值=4000/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%消息/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@异常/>
    < D​​BTYPE值=字符串/>
    <大小值=2000/>
    <布局类型=log4net.Layout.ExceptionLayout/>
  < /参数>
< /附加器>
<根和GT;
  <电平值=信息/>
  <附加目的地-REF REF =LogFileAppender/>
< /根>

和我的控制器:

  ...
 使用log4net的;
 使用的System.Reflection;命名空间MyNames.Controllers
{
  公共类ClientController:控制器
  {
     ReportingEntities DB =新ReportingEntities();
     私人只读的ILog日志= LogManager.GetLogger(MethodBase.GetCurrentMethod()DeclaringType);     公众的ActionResult指数()
     {
         this.log.Debug(样品信息登录到数据库);
         返回查看();
     }
   }
 }

编辑:所以,我提出的建议MODS的,但gorilly仍然不起作用。刚好检查输出窗口,即使我启用调试它仍然显示该
 
试图从这里调试建议但没有错误被抛出。

从我的log4net的内部调试文件:

  log4net的:大会[DotNetOpenAuth.Core,版本4.1.0.0 =文化=中性公钥= 2780ccd10d57b246]加载从[C:\\ WINDOWS \\ Microsoft.NET \\框架\\ V4。 0.30319 \\临时ASP.NET文件\\ ROOT \\ bf082a83 \\ 4eb20e9a \\装配\\ DL3 \\ c62a3103 \\ e01aa9f6_fda1cf01 \\ DotNetOpenAuth.Core.dll]
log4net的:大会[DotNetOpenAuth.Core,版本4.1.0.0 =文化=中性公钥= 2780ccd10d57b246]不指定一个RepositoryAttribute。
log4net的:大会[DotNetOpenAuth.Core,版本4.1.0.0 =文化=中性公钥= 2780ccd10d57b246]使用存储库[log4net的默认存储库]和库类型[log4net.Repository.Hierarchy.Hierarchy]
log4net的:创建库[log4net的默认存储库]使用类型[log4net.Repository.Hierarchy.Hierarchy]
log4net的:关机呼吁层次[log4net的默认存储库]


解决方案

这行添加到的Global.asax.cs(在的Application_Start()):

log4net.Config.XmlConfigurator.Configure();

此外,您还可以打开log4net的调试,以帮助你找出什么在&LT脚麻加入这一行到Web.config;的appSettings>

编辑:下面有值=FALSE,而应该是值=真

 <添加键=log4net.Internal.DebugVALUE =真/>

编辑:

您可以通过添加以下到Web.config(参见官方解释的这里):

 <&System.Diagnostics程序GT;
    <跟踪自动冲洗=真正的>
      <&听众GT;
        <添加
            NAME =TextWriterTraceListener会
            类型=System.Diagnostics.TextWriterTraceListener
            initializeData =C:\\ mylogdirectory \\ log4net_debug.txt/>
      < /听众>
    < /跟踪>
  < /system.diagnostics>

So I am starting this new project and want to use Log4net to log to the Database. I am using EF for other things and it connects fine. For some reason L4N is not logging anything but not throwing any errors. Just wondering what step(s) I may be missing, hope someone can point it out. Do I need to "save" to the db somehow? Thanx so much in advance.

My 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>

and my controller:

 ...
 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();
     }
   }
 }

EDIT: So I made the mods suggested gorilly but still doesnt work. Just happened to check output window and even though I enabled debugging it still shows this .. Tried the debugging suggestion from here but no error was thrown.

From my log4net internal debugging file:

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]

解决方案

Add this line to Global.asax.cs (in Application_Start()):

log4net.Config.XmlConfigurator.Configure();

Also, you can turn on log4net debugging to help you figure out what's going wrong by adding this line to your Web.config under <appSettings>:

Edit: The below had value="false", but should be value="true".

<add key="log4net.Internal.Debug" value="true"/>

Edit:

You can send log4net's internal debug logging to a file by adding the following to your Web.config (see the official explanation here):

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add
            name="textWriterTraceListener"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="C:\mylogdirectory\log4net_debug.txt" />
      </listeners>
    </trace>
  </system.diagnostics>

这篇关于log4net的实体框架5和MVC4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆