.NET Core Log

节选自这里html

日志记录编程主要会涉及到三个核心对象,它们分别是LoggerLoggerFactoryLoggerProvider,这三个对象同时也是.NET Core日志模型中的核心对象,并经过相应的接口(ILogger、ILoggerFactory和ILoggerProvider)来体现。右图所示的UML揭示了日志模型的这三个核心对象之间的关系。编程

在进行日志记录编程时,咱们直接调用Logger对象相应的方法写入日志,LoggerFactory是建立Logger对象的工厂。由LoggerFactory建立的Logger并不真正实现对日志的写入操做,真正将日志写入相应目的地的Logger是经过相应的LoggerProvider提供的,前者是对后者的封装,它将日志记录请求委托给后者来完成。ide

具体来讲,在经过LoggerFactory建立Logger以前,咱们会根据需求将一个或者多个LoggerProvider注册到LoggerFactory之上。好比,若是咱们须要将日志记录到EventLog中,咱们会注册一个EventLogLoggerProvider,后者会提供一个EventLogLogger对象来实现针对EventLog的日志记录。当咱们利用LoggerFactory建立Logger对象时,它会利用注册其上的全部LoggerProvider建立一组具备真正日志写入功能的Logger对象,并采用“组合(Composition)”模式利用这个Logger列表建立并返回一个Logger对象。spa

综上所述,LoggerFactory建立的Logger仅仅是一个“壳”,在它内部封装了一个或者多个具备真正日志写入功能的Logger对象。当咱们调用前者实施日志记录操做时,它会遍历被封装的Logger对象列表,并委托它们将日志写入到相应的目的地。日志

相关文章
相关标签/搜索