zoukankan      html  css  js  c++  java
  • ASP.NET Boilerplate Castle容器无缝添加日志功能

    以添加log4net日志框架为例进行讲解

    1.通常log4net的配置参数放在单独的配置文件中,但也可以写在web.config中,这里在我们的web项目中添加log4net.config应用配置文件

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
        <file value="Logs/Logs.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10000KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
        </layout>
      </appender>
      <root>
        <appender-ref ref="RollingFileAppender" />
        <level value="DEBUG" />
      </root>
      <logger name="NHibernate">
        <level value="WARN" />
      </logger>
    </log4net>
    

    2.在程序启动的时候将LoggingFacility添加到容器中

    protected override void Application_Start(object sender, EventArgs e)
    {
        IocManager.Instance.IocContainer.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
        base.Application_Start(sender, e);
    }
    

    4.Logger是以属性的方式注入的,当需要使用Logger时,通常的用法是

    //1.声明一个Logger属性
    public ILogger Logger { protected get; set; }
    
    //2.在构造函数中给他赋值NullLogger,保证容器在没有解析到Logger时不会报异常
    Logger=NullLogger.Instance;
    

    5.注意事项

    a) 这些代码依赖的dll有

    Castle.Facilities.Logging.dll
    Castle.Core.dll
    log4net.dll

    b) NullLogger.Instance返回一个ILogger实例,Debug、Info等方法内没有代码,什么都没做,详看Castle.Core.Logging源码:

    public class NullLogger : IExtendedLogger, ILogger
    {
        ......
    	
        public static readonly NullLogger Instance = new NullLogger();
    
        public void Debug(string message, Exception exception)
        {
        }
    
        public void DebugFormat(string format, params object[] args)
        {
        }
    
        ......
     }
  • 相关阅读:
    【原创】项目管理软件之争,禅道和JIRA大对比
    互联网大数据下渐渐被人遗忘的数据安全隐患
    然之和今目标办公系统软件功能大对比
    企业如何在办公系统中实践阿米巴
    企业在建站前需要了解的七点
    一个好的网站设计如何影响内容营销
    前端设计师必须知道的10个重要的CSS技巧
    为什么用CDN给你网站加速?
    超实用!网站导航栏设计方法总结
    作为新手,SEO要避免的五大误区
  • 原文地址:https://www.cnblogs.com/dongshuangjie/p/5310739.html
Copyright © 2011-2022 走看看