• <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>

            Javen-Studio 咖啡小屋

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

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              24 隨筆 :: 57 文章 :: 170 評(píng)論 :: 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 閱讀(1106) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久精品人妻一区二区三区| 一本色道久久88综合日韩精品| 久久婷婷激情综合色综合俺也去| 色欲久久久天天天综合网| 国产精品视频久久久| 欧美精品福利视频一区二区三区久久久精品 | 久久成人精品视频| 亚洲?V乱码久久精品蜜桃 | 久久婷婷五月综合国产尤物app | 精品国产乱码久久久久软件| 精品免费久久久久久久| 久久久久国色AV免费观看| 久久精品aⅴ无码中文字字幕不卡| 国产一久久香蕉国产线看观看| 久久伊人五月天论坛| 久久99精品国产| 精产国品久久一二三产区区别 | 亚洲成色WWW久久网站| 久久久WWW免费人成精品| 久久精品水蜜桃av综合天堂| 色婷婷久久久SWAG精品| 国产福利电影一区二区三区,免费久久久久久久精 | 久久最新免费视频| 久久99国产精一区二区三区| 久久国产免费直播| 久久久久久久综合狠狠综合| 99久久夜色精品国产网站| 国产精品久久久久久搜索| 无码久久精品国产亚洲Av影片 | 久久久久久国产精品美女| 久久久久国产精品| 69SEX久久精品国产麻豆| 精品无码久久久久久午夜| 日产精品久久久一区二区| 久久久久久精品无码人妻| 久久伊人五月丁香狠狠色| 亚洲精品第一综合99久久| 伊人热热久久原色播放www| 热综合一本伊人久久精品| 亚洲色欲久久久久综合网 | 国产精品久久99|