(译)Windsor入门教程---第五部分 添加日志功能
介绍
现在我们已经有了基础的框架了,是时候添加内容了,那么我们首先应该考虑的就是在应用程序中添加日志功能。我们会使用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入门教程---第五部分 添加日志功能的更多相关文章
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
- RabbitMQ入门教程(十五):普通集群和镜像集群
原文:RabbitMQ入门教程(十五):普通集群和镜像集群 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.c ...
- Docker入门教程(五)Docker安全
Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...
- 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]
无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...
- Photoshop入门教程(五):滤镜
学习心得:滤镜通常用于摄影行业,是安装在相机镜头前用于过滤自然光的附加镜头,从而获得一些特殊的效果.同理,Photoshop的滤镜也是为了产生特殊的效果.Photoshop滤镜分为两类:一种是内部滤镜 ...
- DQN(Deep Q-learning)入门教程(五)之DQN介绍
简介 DQN--Deep Q-learning.在上一篇博客DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird 中,我们使用Q-Table来 ...
- GAN网络之入门教程(五)之基于条件cGAN动漫头像生成
目录 Prepare 在上篇博客(AN网络之入门教程(四)之基于DCGAN动漫头像生成)中,介绍了基于DCGAN的动漫头像生成,时隔几月,序属三秋,在这篇博客中,将介绍如何使用条件GAN网络(cond ...
- 2016 版 Laravel 系列入门教程(五)【最适合中国人的 Laravel 教程】
本教程示例代码见: https://github.com/johnlui/Learn-Laravel-5 在任何地方卡住,最快的办法就是去看示例代码. 本文是本系列教程的完结篇,我们将一起给 Arti ...
随机推荐
- Error configuring application listener of class 报错 解决
Error configuring application listener of class 次错误是由于工程没有贬义Class文件造成的,clean一下编译一下工程,clean之后进入项目目录查看 ...
- Java的引用c++的引用和C指针的区别
Java的引用本质上就是C中的指针,而c++的引用则完全不同:有一个类 class Point { int x; int y;} 同样的一个Point p; 在Java中p表示一个引用,它等同于C语言 ...
- 第一个前台页面----xflow的页面
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ tagl ...
- nginx之fastcgi
fastcgi的应用程序就是一个while循环在,不停的accept,如果收到相应的服务请求则负责服务并将结果返回. 在fastcgi的进程环境中,标准输入与标准输出已经被重定向到了监听的socket ...
- POJ 2635 The Embarrassed Cryptographer(大数求余)
题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比L要小,如果两个都小,输出较小的那个. 分析:大数求余的方法:针对题目中的样例,143 11,我们可以这样算,1 % 11 ...
- Linux学习 -- 文件系统管理
1 分区和文件系统 分区类型 主分区:<= 4个 扩展分区:只能有一个,也算主分区的一种 不能存储数据和格式化,只能用来包含逻辑分区 逻辑分区:扩展分区中划分的 IDE--最多59个 ...
- Json.net对数据的解析
在官网下载Json.net文件后,解压完将Net20下面的DLL复制到Assets目录下. using UnityEngine; using System.Collections; using New ...
- cordova插件开发-1
这是初级编,实现了js调用Android代码 首先需要编写java代码: public class AppUpdate extends CordovaPlugin { @Override public ...
- 【转】调用getActionBar()报Call requires API level 11 (current min is 8): android.app.Activity#getActionBar
解决办法: 第一种方法:修改AndroidManifest.xml中的minSdkVersion=11 第二种方法: 1.导入android-support-v7-appcompat项目,并将其作 ...
- Strut2 spring hibernate 整合
一.创建web项目工程 wzz 点击finish 2.添加spring Jar包 AOP,Core,Persistence Core ,web jar 点击next 点击Finish 3.配置Da ...