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

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>
            中日韩高清电影网| 韩日精品视频| 亚洲日本成人| 欧美黄色aaaa| 欧美交受高潮1| 在线亚洲一区二区| 亚洲欧美伊人| 一区视频在线| 亚洲精品在线看| 国产精品www| 久久九九99| 免费在线观看日韩欧美| 欧美一区二区免费观在线| 狠狠久久亚洲欧美| 亚洲人成人77777线观看| 欧美日韩高清在线播放| 午夜免费在线观看精品视频| 性色av一区二区怡红| 亚洲国产天堂久久综合网| 日韩亚洲欧美一区二区三区| 国产一二精品视频| 亚洲国产日韩欧美在线动漫| 国产精品久久久久91| 欧美电影免费网站| 国产精品美女在线| 亚洲福利视频专区| 国产一级揄自揄精品视频| 亚洲黄色毛片| 激情综合视频| 中文亚洲字幕| 亚洲美女中文字幕| 亚洲中字黄色| 欧美国产91| 久久综合免费视频影院| 国产精品海角社区在线观看| 欧美xx69| 国产综合香蕉五月婷在线| 99精品免费视频| 亚洲国产一区二区精品专区| 香港久久久电影| 亚洲一区二区三区影院| 欧美顶级大胆免费视频| 久久这里有精品视频| 国产精品嫩草99a| av成人免费观看| 亚洲精品国产视频| 久久婷婷国产综合国色天香| 久久国产精品久久久久久| 欧美精品日韩一本| 欧美高清一区二区| 在线日韩av永久免费观看| 午夜精品福利在线| 午夜精品久久久久久久男人的天堂| 欧美大片免费看| 欧美岛国激情| 亚洲高清123| 久久久伊人欧美| 免费观看成人| 亚洲国产精品成人va在线观看| 欧美在线视频观看| 久久精彩免费视频| 国产一区二区三区最好精华液| 亚洲一区二区三区在线| 亚洲欧美日韩国产成人| 国产精品劲爆视频| 亚洲一区在线观看视频| 午夜视频久久久| 国产视频亚洲| 久久国产精品久久久久久久久久| 久久久噜噜噜久噜久久 | 欧美一区二区在线播放| 久久精品国产清自在天天线| 国产精品自拍网站| 欧美在线亚洲综合一区| 久久最新视频| 亚洲欧洲视频在线| 欧美日产一区二区三区在线观看| 亚洲免费高清视频| 先锋影院在线亚洲| 红桃av永久久久| 欧美jizz19hd性欧美| 日韩视频国产视频| 欧美日韩国产一区精品一区| av成人动漫| 久久精品30| 亚洲精品在线观看视频| 欧美视频一区二区三区在线观看| 国产精品99久久久久久宅男| 久久久国产一区二区三区| 亚洲高清久久久| 国产精品vip| 久久久久久999| 99综合在线| 久久综合九色欧美综合狠狠| 一本大道久久a久久综合婷婷| 国产乱码精品一区二区三| 久久久久看片| 亚洲图片欧洲图片av| 免费人成精品欧美精品| 亚洲尤物在线视频观看| 影音先锋一区| 国产精品久久久久aaaa| 久久精品一区二区| 99精品99久久久久久宅男| 久久久7777| 在线视频精品一区| 在线日韩中文字幕| 国产精品实拍| 欧美日韩国产999| 久久久久久夜| 亚洲欧美日韩直播| 99精品99久久久久久宅男| 国产精自产拍久久久久久蜜| 美女精品在线观看| 性久久久久久久久| 日韩一级大片在线| 亚洲国产成人久久| 久久久精品日韩欧美| 亚洲欧美日韩在线观看a三区 | 揄拍成人国产精品视频| 国产精品久久网| 欧美区在线播放| 乱码第一页成人| 久久精品一区二区国产| 亚洲宅男天堂在线观看无病毒| 亚洲精品美女久久7777777| 美日韩精品视频| 久久久久久久久久久久久久一区| 亚洲欧美经典视频| 一区二区欧美日韩| 99精品视频一区| 日韩视频不卡中文| 亚洲精品美女91| 亚洲卡通欧美制服中文| 亚洲成色777777女色窝| 一区二区视频免费在线观看| 国产一区二区高清视频| 国产亚洲视频在线| 国产日韩精品一区二区三区在线| 国产精品一区二区三区久久 | 久久久777| 欧美在线一二三四区| 午夜视频在线观看一区二区三区| 亚洲性av在线| 性欧美xxxx大乳国产app| 午夜伦欧美伦电影理论片| 午夜精品成人在线| 欧美伊久线香蕉线新在线| 欧美在线亚洲一区| 久久久久久亚洲精品杨幂换脸| 久久久噜噜噜久噜久久| 免费看的黄色欧美网站| 亚洲国产精品www| 亚洲精选视频免费看| 99re成人精品视频| 亚洲综合色网站| 久久国产精品99国产| 免费日韩精品中文字幕视频在线| 欧美成人黑人xx视频免费观看| 欧美成人中文字幕在线| 欧美视频日韩| 国产深夜精品| 亚洲国产日韩欧美在线图片 | 狠狠色丁香婷婷综合影院 | 国产日韩欧美精品综合| 国产日韩一区| 亚洲福利视频专区| 99国产精品视频免费观看| 亚洲一区在线播放| 久久免费观看视频| 亚洲国产日韩在线一区模特| 亚洲视频在线视频| 久久精品国产91精品亚洲| 欧美国产精品专区| 国产精品羞羞答答xxdd| 亚洲国产精品一区| 亚洲一区二区少妇| 模特精品在线| 亚洲网友自拍| 欧美大片网址| 国产一区二区三区最好精华液| 亚洲国产婷婷香蕉久久久久久99 | 久久综合综合久久综合| 亚洲美女电影在线| 久久精品在线免费观看| 欧美日韩一区二区三区四区在线观看| 国产日韩欧美在线播放| 9色精品在线| 麻豆精品在线播放| 亚洲在线视频网站| 欧美国产免费| 在线观看国产精品网站| 欧美亚洲视频在线看网址| 亚洲福利视频免费观看| 午夜久久久久久久久久一区二区| 欧美国产高清| 亚洲国产精品第一区二区三区| 欧美在线视频免费观看| 中文在线一区| 欧美日韩二区三区|