青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評論 :: 4 Trackbacks
Enterprise Library 4.1 - October 2008
Design of the Logging Application Block

The Logging Application Block includes the following features:

  • A simple and consistent way of logging event information
  • Distribution of information to multiple sources
  • Activity tracing to mark the start and end of an activity such as a use case
  • Simplified application block configuration using the configuration tools
  • Extensibility through custom trace listeners and formatters

The Logging Application Block was designed to achieve the following goals:

  • Meet the performance requirements for the application block by ensuring that its code has minimal overhead compared to custom code that uses the System.Diagnostics namespace classes directly.
  • Take advantage of the capabilities provided by the .NET Framework System.Diagnostics namespace classes.
  • Make message routing flexible by using a simple model for distributing log entries.
  • Encapsulate the logic that performs the most common application logging tasks, minimizing the need for custom logging-related code.
  • Make sure that the application block is easily and highly configurable.
  • Make sure that the application block is extensible.

Figure 1 illustrates the design of the Logging Application Block.

Dd203220.cf9a3645-731c-45c0-9ed8-2862adfcd736(en-us,MSDN.10).png

Figure 1
Design of the Logging Application Block

The following sections describe the design of individual sections of the Logging Application Block:

Log Information

The LogEntry class encapsulates content and associated properties for the information an application sends to the application block for logging. Your client code creates new log entries and sets properties such as the message, title, priority, severity, and event ID. Other properties, such as the process name, process ID, and ThreadId, are populated by the application block. A LogEntry object also contains the ExtendedProperties property. This property is a collection of name/value pairs that allows you to place arbitrary string information into the LogEntry object. You can also create a custom LogEntry object by creating a class that derives from the LogEntry class.


Dd203220.note(en-us,MSDN.10).gifNote:
You must either create new formatters and trace listeners or modify the existing ones to support a custom LogEntry class that you create.


A LogEntry object has a collection of categories. The application block determines the destination for the log entry by its categories. You can also prevent the application from writing log entries that specify a designated category by using category filters.


Dd203220.note(en-us,MSDN.10).gifNote:
Client code can also pass information to the Logging Application Block without constructing a LogEntry object by using overloads of the Logger.Write method that do not require a LogEntry object. The application block will construct a LogEntry object for its internal use.

Logging Façade

The Logger class is a façade that sends a log entry to one or more destinations. The client code sends the information to the Logger instance, which then sends the LogEntry to an instance of the LogWriter class.

The LogWriter instance checks the filters to see if the LogEntry object should be discarded or sent to any of the trace sources. The filters are implementations of the ILogFilter interface. You specify the filter implementations in the configuration information. If the LogEntry object passes through the filters, the LogWriter instance sends it to each trace source identified by a name that matches one of the LogEntry object's categories.


Dd203220.note(en-us,MSDN.10).gifNote:
Whenever a Log Entry object fails within the LogWriter instance, the LogWriter instance writes a LogEntry object to the ErrorSource special trace source. The EventID is always the LogWriterFailureEventID. The EventID number is 6352.


The application block relies on the LogSource class to route LogEntry objects. The LogWriter instance has a collection of LogSource objects that correspond to the sources defined in the configuration file. The application block uses the collection of categories in a LogEntry object to determine the LogSource object to use for writing the LogEntry. Categories map directly to LogSource object names.

The LogWriter object also has three special LogSource objects. The AllEventsLogSource object receives all LogEntry objects. The NotProcessedLogSource object receives any LogEntry object that contains a category that does not have an associated LogSource object. The ErrorsLogSource object receives information about errors or warnings that occur while the Logging Application Block code is executing. It does not process errors or warnings from the application code.

Trace Listeners

Each trace source contains a (potentially empty) collection of trace listeners. A trace listener is a class that derives from the abstract class TraceListener in the System.Diagnostics namespace. Examples of trace listeners are the Windows Event Log, a text file, and Message Queuing. Although any TraceListener instance will work with the Logging Application Block, only those trace listeners that are provided with the Logging Application Block can format a LogEntry object. The trace listeners that the .NET Framework provides can be used by the Logging Application Block, but they only send strings.

The Logging Application Block trace listeners do not require a LogEntry object or a formatter to be instantiated. Instead, you can construct them by including the necessary information in the configuration file. The FormattedEventLogTraceListener, the FlatFileTraceListener, and the WmiTraceListener trace listeners use the same configuration information as the System.Diagnostics trace listeners. This means you can configure your application to use these three trace listeners in the <system.diagnostics> configuration section of your configuration file.

The MsmqTraceListener, FormattedDatabaseListener, and EmailTraceListener trace listeners require more configuration information. For example, the EmailTraceListener trace listener requires the destination e-mail address, the SMTP server name, and related e-mail information. You can configure your application to use these trace listeners by including the appropriate information in the configuration file. However, because these trace listeners require more information than the System.Diagnostics trace listeners, you cannot configure them in the <system.diagnostics> configuration section. Instead, you should use the <listeners> section located in the Logging Application Block configuration section. You can also construct these trace listeners in code and pass the required configuration information as parameters to their constructors.

The application block populates the collection of trace listeners from the application configuration data. The LogSource object sends the LogEntry object to each trace listener in the collection.

Log Filters

You can define configuration settings that control filtering of LogEntry objects. Filtering a LogEntry object prevents the application block from sending it to any trace source. The application block includes three types of filters. The CategoryFilter filters LogEntry objects by their category collection. The PriorityFilter filters LogEntry objects by their priority property. The LogEnabledFilter is a global filter that applies to all LogEntry objects in an application. With it, you can turn on and turn off logging. You can also create your own log filters. Use the configuration tools to add them to the application block's configuration information.

Log Formatters

Log entry information must often be formatted before it is written to the destination. Trace listeners that derive from the FormattedTraceListenerBase class format the log entry information before writing it to a destination. The application block includes two classes for formatting LogEntry information. (You can also build your own formatters.) The TextFormatter class converts the LogEntry into a text string. The contents of the string are determined by replacing tokens in the Template property of the TextFormatter configuration information in your application configuration file. The BinaryLogFormatter class uses the .NET Framework BinaryFormatter to serialize and deserialize the LogEntry in binary format. It should be used with the Message Queuing distributor service.

WCF Integration

The Logging Application Block includes three classes that, together, allow you to integrate it with applications that use WCF. These classes are the following:

  • XmlLogEntry
  • EntLibLoggingProxyTraceListener
  • XmlTraceListener

The XmlLogEntry class derives from the LogEntry class, but it includes an Xml property that allows it to contain the original XML data provided by WCF as well as the information that is contained in the LogEntry class.

The EntLibLoggingProxyTraceListener class is used in WCF’s System.ServiceModel trace source so that it can receive messages from WCF. It adds this information to an XmlLogEntry object and then sends the object to the Logging Application Block, which processes it.

The XmlTraceListener class derives from the .NET XmlWriterTraceListener class. It extracts XML data from an XmlLogEntry object and writes this data to an XML text file. You can analyze the output of this trace listener with the WCF log file analysis tools.

posted on 2008-12-26 17:20 Javen-Studio 閱讀(1116) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美黄在线观看| 日韩小视频在线观看专区| 亚洲手机视频| 一个色综合导航| 久久久综合视频| 免费一级欧美在线大片| 亚洲国产91| 免费短视频成人日韩| 亚洲国产岛国毛片在线| 国产一区二区中文字幕免费看| 中文国产一区| 久久全国免费视频| 最新亚洲激情| 国产精品第三页| 欧美综合二区| 欧美黄色免费网站| 小处雏高清一区二区三区| 国产一区视频在线观看免费| 国产精品一区二区黑丝| 免费在线成人av| 一区二区三区欧美激情| 欧美丰满少妇xxxbbb| 亚洲无限av看| 国产一区二区三区四区hd| 美女视频黄免费的久久| 欧美大片在线观看一区二区| 亚洲欧美电影院| 91久久精品国产91久久性色| 亚洲免费在线观看| 精品1区2区3区4区| 亚洲二区视频| 欧美激情国产日韩精品一区18| 亚洲国产另类久久精品| 久久久噜噜噜久久| 欧美高清视频一区| 日韩午夜一区| 另类图片综合电影| 玖玖国产精品视频| 欧美日韩ab| 美女被久久久| 欧美日韩综合另类| 欧美精品高清视频| 欧美精品一区二区三| 久久综合伊人| 国产精品久久久久久久久动漫| 影音先锋中文字幕一区| 国产一区二区三区久久精品| 日韩一二三区视频| 亚洲一区二区影院| 亚洲经典三级| aa亚洲婷婷| 久久在线视频| 久久综合一区| 欧美国产精品劲爆| 香蕉久久夜色精品国产| 亚洲私人影吧| 欧美日韩精选| 亚洲国产毛片完整版 | 亚洲国产免费看| 午夜伦欧美伦电影理论片| 亚洲午夜女主播在线直播| 蜜臀va亚洲va欧美va天堂| 亚洲欧美一级二级三级| 亚洲欧美亚洲| 国产精品黄色在线观看| 日韩一区二区电影网| 亚洲电影观看| 麻豆9191精品国产| 在线欧美不卡| 国产精品99久久久久久久久久久久| 亚洲香蕉在线观看| 亚洲精品精选| 欧美一区二区视频在线观看| 久久精品二区| 欧美日韩国产va另类| 亚洲国产91| 亚洲国产乱码最新视频| 欧美r片在线| 夜夜精品视频| 亚洲免费成人| 国产精品人人做人人爽人人添| 在线观看一区二区视频| 老司机aⅴ在线精品导航| 久久婷婷国产综合国色天香| 欧美一级黄色录像| 韩国av一区二区三区在线观看| 亚洲国产婷婷| 亚洲精品国产精品国产自| 欧美日韩精品是欧美日韩精品| 中文网丁香综合网| 亚洲欧美清纯在线制服| 狠狠88综合久久久久综合网| 亚洲国产精品一区制服丝袜| 国产精品久久久久影院色老大 | 久久视频这里只有精品| 久久精品99国产精品日本| 亚洲国产精品v| 日韩系列欧美系列| 韩国在线视频一区| 亚洲成人中文| 久久精品欧洲| 国产精品一级二级三级| 久久久蜜桃一区二区人| 免费观看国产成人| 欧美成人午夜| 国产精品久久久久久妇女6080| 久久久久国产精品麻豆ai换脸| 亚洲人体1000| 国产人成一区二区三区影院| 99re6这里只有精品视频在线观看 99re6这里只有精品 | 老色批av在线精品| 亚洲午夜激情网站| 久久亚洲精品视频| 伊人久久婷婷| 日韩午夜视频在线观看| 国产网站欧美日韩免费精品在线观看 | 亚洲天堂激情| 久久成人免费日本黄色| 亚洲桃花岛网站| 久久一综合视频| 性色av一区二区三区红粉影视| 另类成人小视频在线| 欧美一二三区精品| 欧美日本精品一区二区三区| 久久免费视频在线观看| 国产精品扒开腿做爽爽爽视频| 亚洲性视频网站| 免费观看久久久4p| 久久久久久9| 国产精品捆绑调教| 亚洲黄色一区二区三区| 激情久久久久久久| 一区二区三区蜜桃网| 99精品欧美一区| 99热在这里有精品免费| 欧美va亚洲va日韩∨a综合色| 欧美在线黄色| 99国产精品| 欧美华人在线视频| 久久久精品免费视频| 国产精品观看| 亚洲天堂av高清| 日韩一级大片| 欧美激情91| 亚洲福利视频二区| 91久久一区二区| 欧美成人自拍| 亚洲人体影院| 中文一区二区| 国产精品你懂的在线欣赏| 在线综合视频| 欧美一区二区性| 久久综合一区二区三区| 欧美国产日韩一区| 日韩视频在线观看免费| 欧美激情综合在线| 99综合在线| 欧美在线日韩| 黄色成人av网站| 欧美国产91| 日韩亚洲不卡在线| 午夜免费日韩视频| 狠狠色噜噜狠狠色综合久| 久久久av网站| 亚洲国产导航| 亚洲一区二区三区精品视频| 国产精品亚洲综合色区韩国| 午夜国产欧美理论在线播放 | 亚洲黄一区二区三区| 亚洲调教视频在线观看| 欧美日韩一区二区三区免费| 久久深夜福利| 亚洲经典自拍| 欧美日韩在线免费观看| 亚洲欧美日韩国产一区| 免费日韩一区二区| 在线视频免费在线观看一区二区| 久久精品亚洲热| 91久久精品一区| 亚洲欧美中文字幕| 亚洲国产精品黑人久久久| 欧美日韩国产综合视频在线观看中文| 一区二区三区欧美| 麻豆乱码国产一区二区三区| 中日韩视频在线观看| 国产毛片精品视频| 欧美国产日韩xxxxx| 亚洲私人影院在线观看| 欧美jizzhd精品欧美巨大免费| 亚洲影院高清在线| 亚洲人成在线观看| 红杏aⅴ成人免费视频| 欧美午夜视频网站| 免费日韩一区二区| 午夜亚洲福利| 亚洲私人影院在线观看| 亚洲欧洲精品成人久久奇米网| 久久久久国产精品www| 亚洲女与黑人做爰| av成人动漫|