Professional.Open.Source.dot.NET.Development.Programming.with.NAnt.NUnit.NDoc [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Professional.Open.Source.dot.NET.Development.Programming.with.NAnt.NUnit.NDoc [Electronic resources] - نسخه متنی

John Wait

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید

Appendix D. Log4NET Appender Configurations





ADONetAppender


The configuration of the ADONetAppender depends on the provider selected for the target database. Here are some examples.

MS SQL Server


The following example shows how to configure the ADONetAppender to log messages to a SQL Server database. The events are written in batches of 100 (BufferSize). The ConnectionType specifies the fully qualified type name for the System.Data.IDbConnection to use to connect to the database. The ConnectionString is database provider-specific. The CommandText is either a prepared statement or a stored procedure; in this case it is a prepared statement. Each parameter to the prepared statement or stored procedure is specified, with its name, database type, and a layout that renders the value for the parameter.

The database table definition is:



CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar] (2000) NULL
)

The appender configuration is:


<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<param name="BufferSize" value="100" />
<param name="ConnectionType"
value="System.Data.SqlClient.SqlConnection, System

.Data, Version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<param name="ConnectionString"
value="data source=[database server];initial

catalog=[database name];integrated
security=false;persist security info=True;User

ID=[user];Password=[password]" />
<param name="CommandText"
value="INSERT INTO Log ([Date],[Thread],[Level],[Logger]

,[Message],[Exception]) VALUES (@log_date, @thread,
@log_level, @logger, @message,

@exception)" />
<param name="Parameter">
<param name="ParameterName" value="@log_date" />
<param name="DbType" value="DateTime" />
<param name="Layout"
type="log4net.Layout.RawTimeStampLayout" />
</param>
<param name="Parameter">
<param name="ParameterName" value="@thread" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%t" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@log_level" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%p" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@logger" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%c" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@message" />
<param name="DbType" value="String" />
<param name="Size" value="4000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@exception" />
<param name="DbType" value="String" />
<param name="Size" value="2000" />
<param name="Layout" type="log4net.Layout.ExceptionLayout" />
</param>
</appender>

MS Access


This example shows how to write events to an Access Database.


<appender name="ADONetAppender_Access"
type="log4net.Appender.ADONetAppender">
<param name="ConnectionString"
value="Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=C:\\log\\access.mdb;User Id=;Password=;" />
<param name="CommandText"
value="INSERT INTO Log ([Date],[Thread],[Level],[Logger]

,[Message]) VALUES (@log_date, @thread,
@log_level, @logger, @message)" />
<param name="Parameter">
<param name="ParameterName" value="@log_date" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@thread" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%t" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@log_level" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%p" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@logger" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%c" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@message" />
<param name="DbType" value="String" />
<param name="Size" value="1024" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m" />
</param>
</param>
</appender>

Oracle9i


This example shows how to write events to an Oracle9i Database. The database table definition is:



create table log (
Datetime timestamp(3),
Thread varchar2(255),
Log_Level varchar2(255),
Logger varchar2(255),
Message varchar2(4000)
);

The appender configuration is:


<appender name="ADONetAppender_Oracle"
type="log4net.Appender.ADONetAppender" >
<param name="ConnectionType"
value="System.Data.OracleClient.OracleConnection, System

.Data.OracleClient, Version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<param name="ConnectionString"
value="data source=[mydatabase];User

ID=[user];Password=[password]" />
<param name="CommandText"
value="INSERT INTO Log (Datetime,Thread,Log_Level,Logger

,Message) VALUES (:log_date, :thread,
:log_level, :logger, :message)" />
<param name="BufferSize" value="128" />
<param name="Parameter">
<param name="ParameterName" value=":log_date" />
<param name="DbType" value="DateTime" />
<param name="Layout"
type="log4net.Layout.RawTimeStampLayout" />
</param>
<param name="Parameter">
<param name="ParameterName" value=":thread" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%t" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value=":log_level" />
<param name="DbType" value="String" />
<param name="Size" value="50" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%p" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value=":logger" />
<param name="DbType" value="String" />
<param name="Size" value="255" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%c" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value=":message" />
<param name="DbType" value="String" />
<param name="Size" value="4000" />
<param name="Layout" type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m" />
</param>
</param>
</appender>

ASPNetTraceAppender


The following example shows how to configure the ASPNetTraceAppender to log messages to the ASP.NET TraceContext. The messages are written to the System.Web.TraceContext.Write method if they are below level WARN. If they are WARN or above, they are written to the System.Web.TraceContext.Warn method.



<appender name="ASPNetTraceAppender"
type="log4net.Appender.ASPNetTraceAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

BufferingForwardingAppender


The following example shows how to configure the BufferingForwardingAppender to buffer 100 messages before delivering them to the ConsoleAppender.


<appender name="BufferingForwardingAppender"
type="log4net.Appender

.BufferingForwardingAppender" >
<param name="BufferSize" value="100"/>
<appender-ref ref="ConsoleAppender" />
</appender>

This example shows how to deliver only significant events. A LevelEvaluator is specified with a threshold of WARN. This means that the events will only be delivered when a message with level of WARN or higher level is logged. Up to 512 (BufferSize) previous messages of any level will also be delivered to provide context information. Messages not sent will be discarded.


<appender name="BufferingForwardingAppender"
type="log4net.Appender

.BufferingForwardingAppender" >
<param name="BufferSize" value="512" />
<param name="Lossy" value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<param name="Threshold" value="WARN"/>
</evaluator>
<appender-ref ref="ConsoleAppender" />
</appender>

ConsoleAppender


The following example shows how to configure the ConsoleAppender to log messages to the console. By default, the messages are sent to the console standard output stream.



<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

This example shows how to direct the log messages to the console error stream.



<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender">
<param name="Target" value="Console.Error" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

EventLogAppender


The following example shows how to configure the EventLogAppender to log to the Application event log on the local machine using the event Source of the AppDomain.FriendlyName.



<appender name="EventLogAppender"
type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

This example shows how to configure the EventLogAppender to use a specific event Source.



<appender name="EventLogAppender"
type="log4net.Appender.EventLogAppender" >
<param name="ApplicationName" value="MyApp" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

FileAppender


The following example shows how to configure the FileAppender to write messages to a file. The file specified is log-file.txt. The file will be appended to rather than overwritten each time the logging process starts.



<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

This example shows how to configure the file name to write to using an environment variable TMP. The encoding to use to write to the file is also specified.



<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="${TMP}\\log-file.txt" />
<param name="AppendToFile" value="true" />
<param name="Encoding" value="unicodeFFFE" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

ForwardingAppender


The following example shows how to configure the ForwardingAppender. The forwarding appender allows a set of constraints to be used to decorate an appender. In this example the ConsoleAppender is decorated with a Threshold of level WARN. This means that an event directed to the ConsoleAppender directly will be logged regardless of its level, but an event directed to the ForwardingAppender will only be passed on to the ConsoleAppender if its level is WARN or higher. This appender is used only in special circumstances.



<appender name="ForwardingAppender"
type="log4net.Appender.ForwardingAppender" >
<param name="Threshold" value="WARN"/>
<appender-ref ref="ConsoleAppender" />
</appender>

MemoryAppender


It is unlikely that the MemoryAppender will be configured using a config file, but if you want to do it, here's how.



<appender name="MemoryAppender"
type="log4net.Appender.MemoryAppender">
<param name="OnlyFixPartialEventData" value="true" />
</appender>

NetSendAppender


The following example shows how to configure the NetSendAppender to deliver messages to a specific user's screen. As this appender is typically only used for important notifications, a Threshold of level Error is specified. This example delivers the messages to the user nicko on the machine SQUARE. However, things are not always straightforward using the Windows Messenger Service; one possible outcome using this configuration is that the Server will broadcast looking for a WINS server, which it will then ask to deliver the message to the Recipient, and the WINS server will deliver it to the first terminal that the user logged in from.



<appender name="NetSendAppender"
type="log4net.Appender.NetSendAppender">
<param name="Threshold" value="ERROR" />
<param name="Server" value="SQUARE" />
<param name="Recipient" value="nicko" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

OutputDebugStringAppender


The following example shows how to configure the OutputDebugStringAppender to write logging messages to the OutputDebugString API.



<appender name="OutputDebugStringAppender"
type="log4net.Appender.OutputDebugStringAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

RemotingAppender


The following example shows how to configure the RemotingAppender to deliver logging events to a specified Sink (in this example the sink is tcp://localhost:8085/LoggingSink). In this example the events are delivered in blocks of 95 events because of the BufferSize. No events are discarded. The OnlyFixPartialEventData option allows the appender to ignore certain logging event properties that can be very slow to generate (e.g., the calling location information).



<appender name="RemotingAppender"
type="log4net.Appender.RemotingAppender" >
<param name="Sink"
value="tcp://localhost:8085/LoggingSink" />
<param name="Lossy" value="false" />
<param name="BufferSize" value="95" />
<param name="OnlyFixPartialEventData" value="true" />
</appender>

This example configures the RemotingAppender to deliver the events only when an event with level ERROR or above is logged. When the events are delivered, up to 200 (BufferSize) previous events (regardless of level) will be delivered to provide context. Events not delivered will be discarded.



<appender name="RemotingAppender"
type="log4net.Appender.RemotingAppender" >
<param name="Sink"
value="tcp://localhost:8085/LoggingSink" />
<param name="Lossy" value="true" />
<param name="BufferSize" value="200" />
<param name="OnlyFixPartialEventData" value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<param name="Threshold" value="ERROR"/>
</evaluator>
</appender>

RollingFileAppender


The RollingFileAppender builds on the FileAppender and has the same options as that appender.

The following example shows how to configure the RollingFileAppender to write to the file log.txt. The file written to will always be called log.txt because the StaticLogFileName param is specified. The file will be rolled based on a size constraint (RollingStyle). Up to 10 (MaxSizeRollBackups) old files of 100 KB each (MaximumFileSize) will be kept. These rolled files will be named: log.txt.1, log.txt.2, log.txt.3, etc.



<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Size" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="100KB" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

SMTPAppender


The following example shows how to configure the SMTPAppender to deliver log events via SMTP email. The To, From, Subject, and SMTPHost are required parameters. This example shows how to deliver only significant events. A LevelEvaluator is specified with a threshold of WARN. This means that an email will be sent for each WARN or higher level message that is logged. Each email will also contain up to 512 (BufferSize) previous messages of any level to provide context. Messages not sent will be discarded.



<appender name="SMTPAppender"
type="log4net.Appender.SMTPAppender">
<param name="To" value="to@domain.com" />
<param name="From" value="from@domain.com" />
<param name="Subject" value="test logging message" />
<param name="SMTPHost" value="SMTPServer.domain.com" />
<param name="LocationInfo" value="false" />
<param name="BufferSize" value="512" />
<param name="Lossy" value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<param name="Threshold" value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%n%d [%t] %-5p %c [%x] - %m%n%n%n" />
</layout>
</appender>

This example shows how to configure the SMTPAppender to deliver all messages in emails with 512 (BufferSize) messages per email.



<appender name="SMTPAppender"
type="log4net.Appender.SMTPAppender">
<param name="To" value="to@domain.com" />
<param name="From" value="from@domain.com" />
<param name="Subject" value="test logging message" />
<param name="SMTPHost" value="SMTPServer.domain.com" />
<param name="LocationInfo" value="false" />
<param name="BufferSize" value="512" />
<param name="Lossy" value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%n%d [%t] %-5p %c [%x] - %m%n%n%n" />
</layout>
</appender>

TraceAppender


The following example shows how to configure the TraceAppender to log messages to the System.Diagnostics.Trace system. These messages will be logged to any System.Diagnostics.TraceListener that is registered in the config file.



<appender name="TraceAppender"
type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

UdpAppender


The following example shows how to configure the UdpAppender to send events to a RemoteAddress on the specified RemotePort.



<appender name="UdpAppender"
type="log4net.Appender.UdpAppender">
<param name="LocalPort" value="8080" />
<param name="RemoteAddress" value="224.0.0.1" />
<param name="RemotePort" value="8080" />
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern"
value="%-5p %c [%x] - %m%n" />
</layout>
</appender>

/ 275