• 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)
        {
        }
    
        ......
     }
  • 相关阅读:
    禁止浏览器缩放功能。
    布局
    设置页面大小
    常用英语
    iOS沙盒路径的简单介绍
    关于 pragma使用
    3Dtouch API Peek and Pop
    3Dtouch API Home Screen Quick Actions
    创建一个.framework静态库
    新学期和学生一起尝试使用博客
  • 原文地址:https://www.cnblogs.com/dongshuangjie/p/5310739.html
Copyright © 2020-2023  润新知