TinyFrame升级之六:全局日志的设计及实现
2014-04-15 22:53
936 查看
日志记录显然是框架设计中不可或缺的元素,在本框架中,我们将使用log4net作为日志记录的主体。下面来具体说明如何让框架继承log4net,并通过Autofac进行IOC注入。
首先,定义好我们的Log日志操作接口:
[code]{
[/code]
具体的解释我就不用说了,其中Info代表正常日志,Warn代表告警日志,Debug代表调试日志,Error代表错误日志,Fatal代表系统崩溃日志。
下面是其实现部分:
[code]{
[/code]
我在构造中对log4net进行了配置,同时获取了log4net的日志记录对象。我们的配置需要写到用户接口中的web.config文件中:
[code]<sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
[/code]
之后在Aufofac中注入一下:
最后,在页面中,我们可以通过构造函数获取其实例:
[code],IBookbookRepository
[/code]
得到的日志结果如下:
首先,定义好我们的Log日志操作接口:
publicinterfaceILoggerService
[code]{
voidInfo(stringmessage);
voidWarn(stringmessage);
voidDebug(stringmessage);
voidError(stringmessage);
voidError(Exceptionex);
voidFatal(stringmessage);
voidFatal(Exceptionex);
}
[/code]
具体的解释我就不用说了,其中Info代表正常日志,Warn代表告警日志,Debug代表调试日志,Error代表错误日志,Fatal代表系统崩溃日志。
下面是其实现部分:
publicclassLoggerService:ILoggerService
[code]{
publicLoggerService()
{
log4net.Config.XmlConfigurator.Configure();
logger=LogManager.GetLogger(typeof(LoggerService));
}
privatereadonlyILoglogger;
publicvoidInfo(stringmessage)
{
logger.Info(message);
}
publicvoidWarn(stringmessage)
{
logger.Warn(message);
}
publicvoidDebug(stringmessage)
{
logger.Debug(message);
}
publicvoidError(stringmessage)
{
logger.Error(message);
}
publicvoidError(Exceptionex)
{
logger.Error(ex.Message,ex);
}
publicvoidFatal(stringmessage)
{
logger.Fatal(message);
}
publicvoidFatal(Exceptionex)
{
logger.Fatal(ex.Message,ex);
}
}
[/code]
我在构造中对log4net进行了配置,同时获取了log4net的日志记录对象。我们的配置需要写到用户接口中的web.config文件中:
<configSections>
[code]<sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<levelvalue="DEBUG"/>
<appender-refref="LogFileAppender"/>
</root>
<appendername="LogFileAppender"type="log4net.Appender.RollingFileAppender">
<paramname="File"value="C:\log.txt"/>
<paramname="AppendToFile"value="true"/>
<rollingStylevalue="Size"/>
<maxSizeRollBackupsvalue="10"/>
<maximumFileSizevalue="10MB"/>
<staticLogFileNamevalue="true"/>
<layouttype="log4net.Layout.PatternLayout">
<paramname="ConversionPattern"value="%-5p%d{yyyy-MM-ddhh:mm:ss}–%m%n"/>
</layout>
</appender>
</log4net>
[/code]
之后在Aufofac中注入一下:
builder.RegisterType<LoggerService>().As<ILoggerService>().InstancePerHttpRequest();
最后,在页面中,我们可以通过构造函数获取其实例:
publicBookService(IUnitOfWorkunitOfWork
[code],IBookbookRepository
,IBookTypebookTypeRepository
,IBookPlacebookPlaceRepository
,ICacheManagercacheManager
,ILoggerServicelogger
)
{
this.unitOfWork=unitOfWork;
this.bookRepository=bookRepository;
this.bookTypeRepository=bookTypeRepository;
this.bookPlaceRepository=bookPlaceRepository;
this.cacheManager=cacheManager;
this.logger=logger;
}
privatereadonlyIUnitOfWorkunitOfWork;
privatereadonlyIBookbookRepository;
privatereadonlyIBookTypebookTypeRepository;
privatereadonlyIBookPlacebookPlaceRepository;
privatereadonlyICacheManagercacheManager;
privatereadonlyILoggerServicelogger;
[/code]
得到的日志结果如下:
相关文章推荐
- TinyFrame升级之五:全局缓存的设计及实现
- 系统操作日志设计(二)-代码实现
- SpringBank 开发日志 一种简单的拦截器设计实现
- Tiger Concurrent Practice --日志分析并行分解设计与实现
- 系统操作日志设计(二)-代码实现
- 中国象棋程序的设计与实现(七)--心得体会和开发日志
- MVC 全局 异常 日志表 设计
- 【无中生有】---10---API接口日志存储设计与实现设计
- Java+Selenium3框架设计准备篇11-用Log4j实现日志输出
- 自动升级系统的设计与实现(续2) -- 增加断点续传功能 (附最新源码)
- 游戏日志系统设计与实现
- 中国象棋程序的设计与实现(七)--心得体会和开发日志
- 从壹开始前后端分离 [.netCore 不定期更新 ] 三十五║ 完美实现全局异常日志记录
- 技术实现(1)之业务日志和监控日志的设计与实现
- Tiger Concurrent Practice --日志分析并行分解设计与实现收藏
- 自己主动升级系统的设计与实现(续2) -- 添加断点续传功能 (附最新源代码)
- 中国象棋程序的设计与实现(七)--心得体会和开发日志
- 基于 ELK Stack 和 Spark Streaming 的日志处理平台设计与实现
- 自动升级系统的设计与实现(源码)
- Linux下一个简单的日志系统的设计及其C代码实现