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

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>
            亚洲日本一区二区| 一区二区三区色| 欧美日韩在线视频首页| 欧美成人免费视频| 影音先锋日韩精品| 免费在线看成人av| 亚洲久久一区二区| 性久久久久久久久| 亚洲电影专区| 国产精品久久久久久久久久直播| 欧美在线视频日韩| 999在线观看精品免费不卡网站| 欧美精品粉嫩高潮一区二区| 亚洲日本电影| 亚洲久久一区| 性xx色xx综合久久久xx| 亚洲国产精品一区制服丝袜| 亚洲欧美国产制服动漫| 精品99一区二区| 欧美久久久久久| 久久久久久久波多野高潮日日| 亚洲精品中文在线| 在线综合视频| 亚洲国产精品视频一区| 亚洲一区二区av电影| 免费久久99精品国产自| 欧美在线视频免费观看| 99精品福利视频| 在线精品国精品国产尤物884a| 国产欧美另类| 欧美人与禽猛交乱配视频| 国产精品乱码一区二三区小蝌蚪| 韩日欧美一区二区三区| 国产精品一区二区三区成人| 欧美日韩国语| 欧美日韩p片| 国产亚洲一二三区| 国产精品黄色| 欧美丝袜一区二区| 伊人久久亚洲热| 亚洲男女毛片无遮挡| 亚洲第一福利在线观看| 欧美成人日本| 性高湖久久久久久久久| 国产精品盗摄一区二区三区| 亚洲美女福利视频网站| 亚洲人成在线播放| 亚洲国产99| 久久国产精品第一页| 亚洲理论在线| 欧美日韩国产bt| 夜夜嗨av色一区二区不卡| 亚洲欧美日韩视频一区| 欧美精品91| 亚洲丶国产丶欧美一区二区三区| 亚洲一区二区三区激情| 在线观看欧美日韩| 亚洲嫩草精品久久| 99re国产精品| 欧美日韩精品免费看| 亚洲区一区二| 亚洲第一中文字幕在线观看| 麻豆av一区二区三区久久| 欧美激情1区2区3区| 久久网站免费| 久久久久久久高潮| 久久躁日日躁aaaaxxxx| 一区二区三区不卡视频在线观看| 亚洲老板91色精品久久| 欧美成人午夜免费视在线看片 | 国产精品美女www爽爽爽视频| 亚洲精品你懂的| 亚洲一级在线观看| 一本色道久久88综合日韩精品| 欧美日韩一区二区三区免费看| 国产精品天美传媒入口| 国产精品一区视频网站| 性欧美长视频| 性久久久久久久久久久久| 国产深夜精品福利| 亚洲人成网站影音先锋播放| 亚洲国产另类精品专区| 欧美黄污视频| 欧美一级视频精品观看| 久久婷婷一区| 国产精品美女久久久久久免费| 午夜精品国产更新| 亚洲国产mv| 欧美四级电影网站| 久久嫩草精品久久久精品一| 亚洲免费电影在线| 国产精品亚洲网站| 免费欧美电影| 欧美视频一区二区在线观看| 久久久久久高潮国产精品视| 欧美1区免费| 亚洲欧美日韩视频一区| 老司机免费视频久久| 国际精品欧美精品| 新片速递亚洲合集欧美合集| 久久综合九色综合网站| 亚洲一区二区三区涩| 久久成年人视频| 国产乱理伦片在线观看夜一区| 久久在线播放| 国产精品久久久久久久久借妻| 免费看亚洲片| 国产精品嫩草影院av蜜臀| 噜噜噜91成人网| 久久国产一区二区三区| aⅴ色国产欧美| 久久久噜噜噜久久中文字免| 中文在线资源观看网站视频免费不卡 | 免费观看久久久4p| 亚洲成色www8888| 久久字幕精品一区| 老色批av在线精品| 亚洲欧美日韩天堂| 玖玖精品视频| 久久久精品2019中文字幕神马| 欧美日韩国产精品自在自线| 免费在线亚洲| 欧美精品一区二区视频| 久久尤物视频| 国产一区二区三区免费在线观看| 日韩一区二区高清| 日韩网站免费观看| 欧美1区2区视频| 美日韩精品免费| 激情婷婷久久| 久久久在线视频| 老司机午夜精品| 好看的av在线不卡观看| 亚洲欧美日本伦理| 国产亚洲一级| 欧美一区二区三区四区在线观看地址| 国产欧美一区二区色老头| 亚洲理论在线观看| 99亚洲伊人久久精品影院红桃| 欧美激情亚洲国产| 亚洲日本成人| 99www免费人成精品| 欧美成人一区二区三区片免费| 免费精品99久久国产综合精品| 在线高清一区| 久久亚裔精品欧美| 牛牛精品成人免费视频| 在线观看亚洲一区| 欧美大片在线看| 99这里有精品| 91久久精品日日躁夜夜躁国产| 久久一区欧美| 亚洲国产裸拍裸体视频在线观看乱了中文| 在线免费不卡视频| 免费在线看一区| 日韩亚洲在线| 欧美一二三视频| 黄色综合网站| 欧美激情一区二区三区在线视频观看 | 欧美激情91| 国产精品欧美在线| 亚洲欧美日韩在线观看a三区 | 99精品国产在热久久婷婷| 欧美日韩一区二区三区在线视频| 日韩香蕉视频| 久久久7777| 亚洲精品欧美日韩专区| 国产精品久久午夜夜伦鲁鲁| 久久精品成人欧美大片古装| 欧美高潮视频| 亚洲一区免费视频| 麻豆精品网站| 夜夜爽99久久国产综合精品女不卡 | 美女精品国产| 99精品福利视频| 久久福利精品| 亚洲九九爱视频| 国产亚洲精品aa午夜观看| 免费观看国产成人| 午夜精品亚洲| 99re这里只有精品6| 久久久久久久精| 亚洲性感激情| 亚洲人成在线免费观看| 国产日韩欧美在线观看| 欧美日韩国产探花| 久久手机精品视频| 亚洲欧美日韩久久精品| 日韩视频一区二区| 欧美高清在线视频| 久久久久久久综合色一本| 亚洲一级黄色片| 91久久久一线二线三线品牌| 国产综合欧美| 国产精品人成在线观看免费| 欧美另类人妖| 欧美华人在线视频| 久久综合五月| 久久久999精品视频| 久久狠狠亚洲综合|