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

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 閱讀(1131) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩一区二区在线观看 | 亚洲一区二区三区欧美| 麻豆精品网站| 久色婷婷小香蕉久久| 亚洲国产精品www| 欧美韩国在线| 欧美金8天国| 亚洲欧美第一页| 亚洲免费视频在线观看| 国产一区二区三区奇米久涩| 美女视频网站黄色亚洲| 美女国产一区| 亚洲午夜女主播在线直播| 亚洲欧美久久| 亚洲第一狼人社区| 亚洲精品字幕| 国产一区二区毛片| 欧美激情四色| 国产精品欧美日韩| 你懂的一区二区| 国产精品观看| 久久蜜臀精品av| 欧美日韩国产黄| 久久久久中文| 欧美色偷偷大香| 久久嫩草精品久久久精品| 欧美大片在线看| 久久精品免费播放| 欧美极品在线播放| 久久久久久**毛片大全| 欧美日产一区二区三区在线观看 | 日韩视频在线观看一区二区| 一区二区国产精品| 在线观看中文字幕不卡| 亚洲一区二区黄| 91久久精品美女| 先锋影音久久久| 一区二区三区精密机械公司| 性欧美大战久久久久久久久| 日韩视频在线观看免费| 久久久精品2019中文字幕神马| 在线视频欧美日韩| 久久一区欧美| 久久精品一区二区三区四区| 欧美人与性动交cc0o| 欧美aaa级| 国产日韩欧美一区二区三区在线观看| 亚洲青涩在线| 国产一区自拍视频| 亚洲一区二区久久| 一本大道av伊人久久综合| 老司机成人网| 美女诱惑一区| 黄色成人在线免费| 亚洲女同精品视频| 亚洲欧美日韩网| 欧美色欧美亚洲另类七区| 亚洲欧洲一区二区三区| 亚洲国产精品免费| 久久午夜激情| 欧美不卡视频一区发布| 一区二区三区在线高清| 欧美在线精品免播放器视频| 欧美一区1区三区3区公司| 欧美午夜精品久久久| 亚洲美洲欧洲综合国产一区| 亚洲激情影视| 欧美黄污视频| 亚洲人成在线观看网站高清| 亚洲乱码国产乱码精品精天堂| 欧美91大片| 91久久国产综合久久91精品网站| 亚洲人成7777| 欧美精品日本| 夜夜嗨av一区二区三区免费区| 亚洲视频axxx| 国产精品久久影院| 欧美亚洲日本国产| 久久夜精品va视频免费观看| 亚洲电影免费在线| 欧美大片一区二区| 99亚洲一区二区| 香蕉国产精品偷在线观看不卡| 国产手机视频精品| 久久精品人人做人人爽电影蜜月| 蜜桃伊人久久| 99热这里只有精品8| 国产精品白丝av嫩草影院| 亚洲免费视频网站| 久久久久九九视频| 亚洲精品一区二区三区蜜桃久| 欧美黑人国产人伦爽爽爽| 99精品视频一区二区三区| 欧美一级夜夜爽| 尤物九九久久国产精品的分类| 久久先锋影音| 亚洲网站在线| 老司机精品视频网站| 亚洲精品欧美激情| 国产精品专区第二| 久久色在线播放| 99国产欧美久久久精品| 久久综合色影院| 中日韩男男gay无套| 国产一区自拍视频| 欧美精品尤物在线| 久久国产福利| 99re成人精品视频| 久久嫩草精品久久久精品一| 99在线热播精品免费| 国产在线不卡精品| 欧美日韩精品系列| 久久男人资源视频| 亚洲一二三区视频在线观看| 欧美黑人一区二区三区| 欧美亚洲免费高清在线观看| 亚洲精品看片| 精品av久久久久电影| 国产精品毛片在线看| 欧美激情第二页| 久久激情五月丁香伊人| 亚洲香蕉伊综合在人在线视看| 亚洲第一在线| 久久久免费精品| 欧美一区二区三区精品| 亚洲无线视频| 一区二区91| 亚洲精品一区二区在线| 在线观看日韩欧美| 国产亚洲福利社区一区| 国产精品美女主播在线观看纯欲| 欧美福利电影网| 欧美阿v一级看视频| 久久精品视频在线| 欧美在线视频观看| 亚洲欧美在线看| 亚洲一品av免费观看| aaa亚洲精品一二三区| 亚洲精品欧美在线| 亚洲人成在线观看一区二区| 欧美激情性爽国产精品17p| 美国成人直播| 另类欧美日韩国产在线| 久久蜜桃香蕉精品一区二区三区| 欧美影院精品一区| 性18欧美另类| 欧美在线|欧美| 欧美在线视频网站| 久久av一区二区| 久久精品国产免费看久久精品| 欧美一区二区三区日韩视频| 亚洲欧美久久| 欧美在线一级视频| 久久久精品久久久久| 久热综合在线亚洲精品| 美国十次了思思久久精品导航| 免费久久精品视频| 欧美激情亚洲| 日韩视频―中文字幕| 亚洲午夜精品在线| 欧美一区二区在线| 久久久免费观看视频| 欧美a级片网| 欧美日韩国产区一| 国产欧美日韩伦理| 一区二区视频免费在线观看| 亚洲日本免费| 亚洲欧美成aⅴ人在线观看| 久久国产精品高清| 欧美国产第一页| 日韩午夜视频在线观看| 亚洲欧美在线一区二区| 久久久一二三| 欧美日韩免费观看一区二区三区| 国产精品多人| 有坂深雪在线一区| 夜色激情一区二区| 久久精品国产亚洲一区二区三区 | 亚洲精品系列| 午夜欧美精品久久久久久久| 久久亚洲私人国产精品va| 欧美黄免费看| 亚洲尤物精选| 亚洲手机成人高清视频| 亚洲人成人一区二区三区| 在线亚洲精品| 久久阴道视频| 国产精品一区二区在线观看不卡 | 国内久久视频| 99精品热6080yy久久| 欧美在线不卡| 91久久久久久久久| 久久精品国产欧美亚洲人人爽| 欧美日韩1区| 黄色日韩在线| 欧美一区国产二区| 亚洲免费久久| 乱码第一页成人| 国产在线不卡| 亚洲欧美bt|