• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > 详解ABP框架中的日志管理和设置管理的基本配置

详解ABP框架中的日志管理和设置管理的基本配置

作者:阳光铭睿 字体:[增加 减小] 来源:互联网 时间:2017-05-11

阳光铭睿通过本文主要向大家介绍了abp框架,abp框架源码,abp框架是什么,abp 263,abp-50增压泵等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

日志管理
Server side(服务器端)
ASP.NET Boilerplate使用Castle Windsor's logging facility日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog... 等等。对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方便的处理各种特殊的日志库,而且当业务需要的时候,很容易替换日志组件。

译者注释:Castle是什么:Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西。ASP.NET Boilerplate的ioc容器就是通过Castle实现的。

Log4Net 是asp.net下面最流行的一个日志库组件, ASP.NET Boilerplate 模板也使用了Log4Net日志库组件,但是呢,我们这里仅仅通过一行关键代码就实现Log4Net 的依赖注入(具体说明在下面的配置文件),所以,如果你想替换成自己的日志组件,也很容易。

获取日志记录器logger
不管你选择哪一个日志库组件,通过代码来进行日志记录都是一样的。(这里吐槽, Castle's 通用 ILogger 接口实在太牛逼了)。

下面进入正题:(译者注:下面的代码是abp框架的Castle.Core源码分析以及实现)

1、首先呢,我们要先处理日志记录器对象logger, ASP.NET Boilerplate框架使用了dependency injection依赖注入技术,我们可以很方便的使用依赖注入生成日志记录器对象logger。

接下来我们看一下 ASP.NET Boilerplate是怎么实现日志记录功能的吧:

using Castle.Core.Logging; //1: 导入日志的命名空间,Castle.Core.Logging
public class TaskAppService : ITaskAppService
{ 
 //2:通过依赖注入获取日志记录器对象。
 这里先定义了一个ILogger类型的public属性Logger,这个对象就是我们用来记录日志的对象。在创建了TaskAppService对象(就是我们应用中定义的任务)以后,通过属性注入的方式来实现。
 public ILogger Logger { get; set; }

 public TaskAppService()
 { 
  //3: 如果没有日志记录器,将日志记录器返回一个空的实例,不写日志。这是依赖注入的最佳实现方式,  // 如果你不定义这个空的日志记录器,当我们获取对象引用并且实例化的时候,就会产生异常。  // 这么做,保证了对象不为空。所以,换句话说,不设置日志记录器,就不记录日志,返回一个null的对象。  // NullLogger对象实际上什么都木有,空的。这么做,才能保证我们定义的类在实例化时正常运作。
  Logger = NullLogger.Instance;
 } 
 public void CreateTask(CreateTaskInput input) 
 {
  //4: 写入日志
  Logger.Info("Creating a new task with description: " + input.Description);
  //TODO: save task to database... } 
} 
</div>

INFO 2014-07-13 13:40:23,360 [8 ] SimpleTaskSystem.Tasks.TaskAppService - Creating a new task with description:Remember to drink milk before sleeping!
</div>

写入日志以后,我们可以查看日志文件,就像下面的格式:

ASP.NET Boilerplate框架提供了MVC Controllers、Web API Controllers和Application service classes的基类(自己定义的控制器和应用服务,都必须要继承ASP.NET Boilerplate的基类,换句话说,当你自定义的Web API controllers、mvc controllers,Application service classes都继承了ASP.NET Boilerplate框架对应的基类,你就可以直接使用日志记录器)。</div>
public class HomeController : SimpleTaskSystemControllerBase 
{ 
 public ActionResult Index() 
 { 
  Logger.Debug("A sample log message..."); 
  return View(); 
 } 
} 
</div>

说明:SimpleTaskSystemControllerBase这个基类控制器是我们自己定义的基类控制器,他必须继承自 AbpController。

这样实现,日志记录器才能正常工作。当然了,你也可以实现自己的基类,这样的话你也可以不使用依赖注入了。

 配置
如果你在官网上通过ASP.NET Boilerplate templates 来生成了你的工程,Log4Net的所有配置都自动生成了。

默认的配置格式如下:

•Log level: 日志记录等级,有DEBUG, INFO, WARN, ERROR or FATAL5个。
•Date and time: 日志记录时间。
•Thread number: 每行日志写时候的线程号。
•Logger name: 日志记录器的名字,通常情况就是类名称。
•Log text: 你写入的日志内容。
配置文件:log4net.config 一般都在项目的web目录下面。

<?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>
</div>

Log4Net是一个非常强大和易用的日志库组件,你可以写各种日志,比如写到txt文件,写入到数据库等等。你能设置最小的日志等级,就像上面这个针对NHibernate的配置。不同的记录器写不同的日志,等等。

具体的用法大家可以参照:http://logging.apache.org/log4net/release/config-examples.html

最后,在工程的Global.asax 文件中,来定义Log4Net的配置文件:

public class MvcApplication : AbpWebApplication
{
 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);
 }
}
</div>

几行代码就调用了Log4Net这个日志记录组件,工程中的Log4Net库是在 nuget package包中的,你也可以换成其他日志组件库,但是代码不用做任何改变。因为,我们的框架是通过依赖注入实现日志记录器的!

 Client side(客户端)
最后,更厉害的是,你还可以在客户端调用日志记录器。在客户端,ASP.NET Boilerplate框架有对应的 javascript 日志API,这意味着你可以记录下来浏览器的日志,实现代码如下:

abp.log.warn('a sample log message...'); 

</div>

附上:客户端javascript的api,这里要说明的是,你可以使用console.log在客户端输出日志,但是这个API 不一定支持所有的浏览器,还有可能导致你的脚本出现异常,你可以使用我们的api,我们的是安全的,你甚至可以重载或者扩展这些api。

abp.log.debug('...');
abp.log.info('...');
abp.log.warn('...');
abp.log.error('...'); 
abp.log.fatal('...');

</div>

设置管理
介绍
每个应用程序需要存储一些设置并在应用程序的某个地方使用这些设置。ABP框架提供强大的基础架构,我们可以在服务端或者客户端设置,来存储/获取应用程序、 租户和用户级别的配置。

设置通常是存储在数据库(或另一个来源)中,用名称-值(name-value)字符串对应的结构来表示。我们可以把非字符串值转换成字符串值来存储。

注意:关于ISettingStore接口

为了使用设置管理必须实现 ISettingStore 接口。你可以用自己的方式实现它,在module-zero项目中有完整的实现可以参考。

定义设置
使用设置之前必须要先定义。ABP框架是模块化设计,所以不同的模块可以有不同的设置。为了定义模块自己的设置,每个模块都应该创建继承自SettingProvider 的派生类。设置提供程序示例如下所示:

public class MySettingProvider : SettingProvider
{
 public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext c



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ABP框架中的日志管理和设置管理的基本配置

相关文章

  • 2017-05-11遍历目录以及目录下文件的函数
  • 2017-05-11asp无限分级(递归调用)
  • 2017-05-11ASP正则表达式技巧
  • 2017-05-11Asp实现假静态
  • 2017-05-11ASP Access实现网站计数器(访问量)
  • 2017-05-11ASP 空字符串、IsNull、IsEmpty区别分析
  • 2017-05-11ASP实现GB2312字符与区位码的相互转换的代码
  • 2017-05-11日期函数扩展类Ver0.1.1
  • 2017-05-11一个带采集远程文章内容,保存图片,生成文件等完整的采集功能
  • 2017-05-11在线实时开通FTP&WEB

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP的一些自定义函数整理第1/2页
    • javascript asp教程第九课--cookies
    • 后台管理登录篇-asp设计与数据库
    • Asp 编码互转的研究和实现代码
    • ASP小偷(远程数据获取)程序入门教程
    • Server.Execute方法执行指定的ASP程序
    • 通过数组给您的文件排序
    • asp执行带参数的sql语句实例
    • 收集asp的常用函数
    • ASP中实现分页显示的七种方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有