介绍

    现在我们已经有了基础的框架了,是时候添加内容了,那么我们首先应该考虑的就是在应用程序中添加日志功能。我们会使用Windsor来配置,在这一部分,你将学习Windsor之外的其他功能。

Logging Facility

    在上一部分说过,Windsor有很多自带的可选的功能组件,他们扩展了Windsor的即用性。在这一部分,我们将在程序中添加日志功能。

    Logging Facility提供了一些常用的日志框架比如Log4net、Nlog,以及mvc内置的日志框架Trace。Logging Facility将提供一个抽象类,这样当你的程序切换其他日志框架的时候不会很麻烦。更重要的是,Facility根据需要提供Ilogger实例,不需要任何静态依赖。

我们需要添加必须的包,启动Nuget's Package Manager Console并键入:

Install-Package Castle.Windsor-log4net

这将会把依赖想都添加到程序中:

Installer

    接下来添加程序集的引用,创建一个Installer来添加日志功能到程序中:

注意API的调用模式,泛型参数指定我们想要添加的类型,然后用lambda表达式制定类型为log4net.

    我们没有指定log4net的配置文件,默认的配置是在log4net.Config文件,这是log4net配置的核心文件。我们在程序中添加一个配置文件,包含标准的log4net配置信息:

然后修改Installer类:

What we just did?

    你可能会问:这怎么使用?你要做的就是调用Castle.Core.Logging.Ilogger命名空间下的Ilogger接口(常用的做法是使用属性,而不是构造函数)。容器将提供配置并且准备使用Ilogger实例。为了说明我们在AccountController中添加了一个警告日志,当用户登录密码错误时记录日志:

如果log4net的配置是正确的,那么现在登录错误的日志将被记录。

(译)Windsor入门教程---第五部分 添加日志功能的更多相关文章

  1. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

  2. RabbitMQ入门教程(十五):普通集群和镜像集群

    原文:RabbitMQ入门教程(十五):普通集群和镜像集群 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.c ...

  3. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  4. 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

    无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...

  5. 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)

    这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...

  6. Photoshop入门教程(五):滤镜

    学习心得:滤镜通常用于摄影行业,是安装在相机镜头前用于过滤自然光的附加镜头,从而获得一些特殊的效果.同理,Photoshop的滤镜也是为了产生特殊的效果.Photoshop滤镜分为两类:一种是内部滤镜 ...

  7. DQN(Deep Q-learning)入门教程(五)之DQN介绍

    简介 DQN--Deep Q-learning.在上一篇博客DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird 中,我们使用Q-Table来 ...

  8. GAN网络之入门教程(五)之基于条件cGAN动漫头像生成

    目录 Prepare 在上篇博客(AN网络之入门教程(四)之基于DCGAN动漫头像生成)中,介绍了基于DCGAN的动漫头像生成,时隔几月,序属三秋,在这篇博客中,将介绍如何使用条件GAN网络(cond ...

  9. 2016 版 Laravel 系列入门教程(五)【最适合中国人的 Laravel 教程】

    本教程示例代码见: https://github.com/johnlui/Learn-Laravel-5 在任何地方卡住,最快的办法就是去看示例代码. 本文是本系列教程的完结篇,我们将一起给 Arti ...

随机推荐

  1. photoshop移动工具

    1*移动工具 V  移动图层  若果移动选区相当于剪切 2*

  2. rebar

    www.cnblogs.com/panfeng412/archive/2011/08/14/2137990.html

  3. WPF中ListBox控件选择多个数据项

    XAML: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft ...

  4. LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理

    题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); ...

  5. iOS label换行 自适应

    //自动折行设置 addressDetailLab.lineBreakMode = NSLineBreakByWordWrapping; addressDetailLab.numberOfLines ...

  6. Bitmap与Matrix旋转ImageView

    Bitmap与Matrix旋转ImageView 标签: matrixfloatbutton测试importlayout 2010-08-23 22:18 8569人阅读 评论(0) 收藏 举报  分 ...

  7. UVA - 11400 Lighting System Design (区间DP)

    这个问题有两个点需要注意: 1. 对于一种灯泡,要么全换,要么全不换. 证明: 设一种灯泡单价为p1,电池价格为k1,共需要L个,若把L1个灯泡换成单价为p2,电池为k2的灯泡,产生的总花费为p1*L ...

  8. Linux一些命令

    1.查看系统安装软件 rpm -qa  //(不包括绿色安装的软件程序,也就是直接在安装目录中启动的不包括) rpm -qa |grep gcc 参数解释:q ——询问 a —— 查询全部   l — ...

  9. zepto.js 学习之(一)

    中文文档:http://mweb.baidu.com/zeptoapi/#attr

  10. CentOS下将自编译的Apache添加为系统服务

    首先,先谈下对linux服务的理解 1,linux 服务运行方式: 脚本的方式运行,服务脚本存放位置/etc/rc.d/init.d/ 2,linux服务管理软件 chkconfig Red Hat公 ...