首页 > 代码库 > log4net学习手册四 Apache log4net?配置实例
log4net学习手册四 Apache log4net?配置实例
以下内容是Apache log4net官网技术文档通过google翻译而来
http://logging.apache.org/log4net/release/features.html
概述
本文介绍的示例配置为内置的appender。这些结构的设计与log4net.Config.DOMConfigurator和log4net.Repository.Hierarchy.Hierarchy工作。
这些实施例绝不是对追加程序穷举配置。对于可以指定每个附加目的地和更多的细节上每一个选项的参数的完整列表,请参阅SDK文档的附加目的地。
AdoNetAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.AdoNetAppender。
该AdoNetAppender的配置取决于选定为目标数据库的提供商。下面是一些例子。
MS SQL Server
下面的示例显示了如何配置AdoNetAppender将消息记录到SQL Server数据库。该事件被写入在100(BUFFERSIZE)批次。该ConnectionType指定了System.Data.IDbConnection用于连接到数据库的完全限定的类型名称。 ConnectionString中为数据库提供特定的。在CommandText要么是准备好的语句或存储过程,在这种情况下,它是一个事先准备好的声明。每一个参数对所制备的语句或存储过程中指定其名称,数据库类型和布局呈现为参数的值。
数据库表的定义是:
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)
附加器配置是:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="100" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" /> <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter></appender>
MS Access
这个例子显示了如何将事件写入Access数据库。
<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender"> <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\log\access.mdb;User Id=;Password=;" /> <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> <parameter> <parameterName value="@log_date" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date" /> </layout> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="1024" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter></appender>
Oracle9i
这个例子显示了如何将事件写入到Oracle9i数据库。
数据库表的定义是:
create table log ( Datetime timestamp(3), Thread varchar2(255), Log_Level varchar2(255), Logger varchar2(255), Message varchar2(4000) );
附加器配置是:
<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender"> <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="data source=[mydatabase];User ID=[user];Password=[password]" /> <commandText value="INSERT INTO Log (Datetime,Thread,Log_Level,Logger,Message) VALUES (:log_date, :thread, :log_level, :logger, :message)" /> <bufferSize value="128" /> <parameter> <parameterName value=":log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value=":thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value=":log_level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value=":logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value=":message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter></appender>
Oracle8i
这个例子说明了如何将事件写入到Oracle8i数据库。
数据库表的定义是:
CREATE TABLE CSAX30.LOG( THREAD VARCHAR2(255), LOG_LEVEL VARCHAR2(255), LOGGER VARCHAR2(255), MESSAGE VARCHAR2(4000))TABLESPACE CSAX30D LOGGING
附加器配置是:
<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender"> <connectionType value ="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="data source=<dsname>;User ID=<userid>;Password=<password>" /> <commandText value="INSERT INTO Log (Log_Level,Logger,Message) VALUES (:log_level, :logger, :message)" /> <bufferSize value="250" /> <parameter> <parameterName value=":log_level" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value=":logger" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value=":message" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter></appender>
IBM DB2
这个例子说明了如何将事件写入到IBM DB2 8.2数据库。下面的语法也应与旧的DB2数据库服务器。
数据库表的定义是:
CREATE TABLE "myschema.LOG" ( "ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( START WITH +1 INCREMENT BY +1 MINVALUE +1 MAXVALUE +2147483647 NO CYCLE NO CACHE NO ORDER ), "DATE" TIMESTAMP NOT NULL, "THREAD" VARCHAR(255) NOT NULL, "LEVEL" VARCHAR(500) NOT NULL, "LOGGER" VARCHAR(255) NOT NULL, "MESSAGE" VARCHAR(4000) NOT NULL, "EXCEPTION" VARCHAR(2000))IN "LRGTABLES";
附加器配置是:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="100" /> <connectionType value="IBM.Data.DB2.DB2Connection,IBM.Data.DB2, Version=8.1.2.1" /> <connectionString value="server=192.168.0.0;database=dbuser;user Id=username;password=password;persist security info=true" /> <commandText value="INSERT INTO myschema.Log (Date,Thread,Level,Logger,Message,Exception) VALUES (@log_date,@thread,@log_level,@logger,@message,@exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="500" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter></appender>
SQLite
这个例子显示了如何将事件写入一个SQLite数据库。这是测试针对v0.21 of the SQLite .NET provider。
SQLite没有强类型的列或字段长度,但其建议你还是包含此信息的可读性。数据库表的定义是:
CREATE TABLE Log ( LogId INTEGER PRIMARY KEY, Date DATETIME NOT NULL, Level VARCHAR(50) NOT NULL, Logger VARCHAR(255) NOT NULL, Message TEXT DEFAULT NULL);
附加器配置是:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="100" /> <connectionType value="Finisar.SQLite.SQLiteConnection, SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c" /> <connectionString value="Data Source=c:\\inetpub\\wwwroot\\logs\\log4net.db;Version=3;" /> <commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" /> <parameter> <parameterName value="@Date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@Level" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@Logger" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@Message" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter></appender>
AspNetTraceAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.AspNetTraceAppender。
下面的示例显示了如何配置AspNetTraceAppender将消息记录到ASP.NET TraceContext。该消息被写入System.Web.TraceContext.Write方法,如果他们是低于水平时发出警告。如果它们是WARN或更高它们被写入到System.Web.TraceContext.Warn方法。
<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" > <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
BufferingForwardingAppender
如需完整的详细信息,请参阅SDK参考条目: log4net.Appender.BufferingForwardingAppender.
下面的示例显示了如何配置BufferingForwardingAppender他们提供的是ConsoleAppender前缓冲器100的消息。
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" > <bufferSize value="100"/> <appender-ref ref="ConsoleAppender" /></appender>
这个例子显示了如何只提供显著的事件。一个LevelEvaluator指定了警告阈值。这意味着该事件将仅当与水平的消息WARN或递送更高级别被记录。多达512个(BUFFERSIZE)中任一级以前的消息也将被输送到提供上下文信息。未发送的邮件将被丢弃。
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" > <bufferSize value="512" /> <lossy value="true" /> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="WARN"/> </evaluator> <appender-ref ref="ConsoleAppender" /></appender>
ColoredConsoleAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.ColoredConsoleAppender.
下面的示例显示了如何配置ColoredConsoleAppender将消息记录到控制台。默认情况下,该消息被发送到控制台的标准输出流。这个例子显示了如何突出错误消息。
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red, HighIntensity" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子说明了不同层次的消息使用不同颜色的。
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="DEBUG" /> <backColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
ConsoleAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.ConsoleAppender.
下面的示例显示了如何配置是ConsoleAppender将消息记录到控制台。默认情况下,该消息被发送到控制台的标准输出流。
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何引导日志消息到控制台错误流。
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <target value="Console.Error" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
EventLogAppender
如需完整的详细信息,请参阅SDK参考条目: log4net.Appender.EventLogAppender.
下面的示例演示了如何使用事件AppDomain.FriendlyName源配置EventLogAppender登录到本地计算机上的应用程序事件日志中。
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置EventLogAppender为使用特定的事件源。
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > <applicationName value="MyApp" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
有关如何设置事件日志,让EventLogAppender写它的更多信息,请参见常见问题解答:为什么不EventLogAppender工作?
FileAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.FileAppender.
下面的示例显示了如何配置FileAppender将消息写入到文件中。指定的文件是日志file.txt的。该文件将被附加在每个记录过程开始的时间,而不是覆盖。
<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log-file.txt" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置文件名称写入到使用环境变量TMP。使用的编码写入也指定的文件。
<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="${TMP}\log-file.txt" /> <appendToFile value="true" /> <encoding value="unicodeFFFE" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置附加器使用最少的锁定模式,允许多个进程写同一个文件。
<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="${TMP}\log-file.txt" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置的appender使用“进程间”锁定模式。
<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="${TMP}\log-file.txt" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+InterProcessLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
在更改锁定模式,使多个进程可以登录到同一个文件,请阅读常见问题解答。
ForwardingAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.ForwardingAppender.
下面的示例显示了如何配置ForwardingAppender。要使用的附加器允许一组约束的转发来装饰的附加器。在这个例子中是ConsoleAppender装饰有一个阈值水平时发出警告。这意味着,直接将不论其电平记录的朝向是ConsoleAppender一个事件,但引导到ForwardingAppender事件只会被传递到是ConsoleAppender如果其电平是WARN或更高。这种附加器仅用于特殊情况。
<appender name="ForwardingAppender" type="log4net.Appender.ForwardingAppender" > <threshold value="WARN"/> <appender-ref ref="ConsoleAppender" /></appender>
ManagedColoredConsoleAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.ManagedColoredConsoleAppender.
下面的示例显示了如何配置ManagedColoredConsoleAppender将消息记录到控制台。默认情况下,该消息被发送到控制台的标准输出流。这个例子显示了如何突出错误消息。
<appender name="ManagedColoredConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子说明了不同层次的消息显示不同颜色。
<appender name="ManagedColoredConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="DarkRed" /> </mapping> <mapping> <level value="WARN" /> <foreColor value="Yellow" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="White" /> </mapping> <mapping> <level value="DEBUG" /> <foreColor value="Blue" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level %-20.20logger: %message%newline"/> </layout></appender>
MemoryAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.MemoryAppender.
这是不太可能的MemoryAppender将使用配置文件配置的,但如果你想这样做,这里的如何。
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> <onlyFixPartialEventData value="true" /></appender>
NetSendAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.NetSendAppender.
下面的示例显示了如何配置NetSendAppender将邮件传递到特定用户的屏幕上。作为本附加器通常只用于重要的通知的电平误差在阈值被指定。这个例子提供了消息,上机SQUARE用户nicko。然而事情并不总是直截了当使用Windows Messenger服务,使用此配置中的一个可能的结果是服务器会广播寻找一个WINS服务器,它就会告诉你要传递消息给收件人,WINS服务器将其发送到用户从记录在所述第一终端。
<appender name="NetSendAppender" type="log4net.Appender.NetSendAppender"> <threshold value="ERROR" /> <server value="SQUARE" /> <recipient value="nicko" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
OutputDebugStringAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.OutputDebugStringAppender.
下面的示例显示了如何配置OutputDebugStringAppender写日志信息到OutputDebugString的API。
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender" > <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
RemotingAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.RemotingAppender.
下面的示例显示了如何配置RemotingAppender提供事件日志记录到指定的接收器(在这个例子中,沉为tcp://本地主机:8085/ LoggingSink)。在这个例子中,事件被传递的,因为BUFFERSIZE95事件块。任何事件都将被丢弃。该OnlyFixPartialEventData选项允许附加器忽略,可以产生很慢的某些记录事件的属性(如呼叫的位置信息)。
<appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" > <sink value="tcp://localhost:8085/LoggingSink" /> <lossy value="false" /> <bufferSize value="95" /> <onlyFixPartialEventData value="true" /></appender>
此示例配置RemotingAppender交付,只有当登录与级别错误或以上的事件的事件。当事件被传递,最高可达200(缓冲区大小)之前的事件(无论级别),将交付给提供上下文。未交付的事件将被丢弃。
<appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" > <sink value="tcp://localhost:8085/LoggingSink" /> <lossy value="true" /> <bufferSize value="200" /> <onlyFixPartialEventData value="true" /> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="ERROR"/> </evaluator></appender>
RollingFileAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.RollingFileAppender.
在RollingFileAppender进行建立在FileAppender并且具有相同的选项的附加目的地。
下面的示例显示了如何配置RollingFileAppender进行写入到文件log.txt中。写入文件将始终被称为log.txt中,因为指定的StaticLogFileName参数是。该文件将根据一个尺寸约束(RollingStyle)进行轧制。每100 KB(MaximumFileSize)到10(MaxSizeRollBackups)旧文件将被保留。这些卷文件将被命名为:log.txt.1,log.txt.2,log.txt.3等...
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="100KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置RollingFileAppender进行滚动登录的日期期间的文件。这个例子将滚动日志文件的每一分钟!要改变滚动周期调整DatePattern值。例如,“年月日”的日期模式将推出的每一天。见System.Globalization.DateTimeFormatInfo可用模式的列表。
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value="yyyyMMdd-HHmm" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置RollingFileAppender进行滚动登录的日期和期限的日期期间对文件大小中的文件。每天1MB的只有最后10个文件将被保留。
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="yyyyMMdd" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
这个例子显示了如何配置RollingFileAppender进行滚动日志文件的每一次执行程序。该appendToFile属性设置为false,以防止附加器从覆盖现有文件。该maxSizeRollBackups设置为负1,以允许备份文件的无限数量。该文件的大小就必须受到限制,但在这里它被设置为50吉字节,如果一个日志文件中的单个运行那么它也将轧制过程中超过这一尺寸限制。
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile.txt" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="50GB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
SmtpAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.SmtpAppender.
下面的示例显示了如何配置SmtpAppender通过SMTP电子邮件提供日志事件。收件人,发件人,主题和SmtpHost需要的参数。这个例子显示了如何只提供显著的事件。一个LevelEvaluator指定了警告阈值。这意味着电子邮件将被发送的所记录的每个WARN或更高级别的消息。每封电子邮件也将包含的任何级别高达512(缓冲区大小)以前的消息提供上下文。未发送的邮件将被丢弃。
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> <to value="to@domain.com" /> <from value="from@domain.com" /> <subject value="test logging message" /> <smtpHost value="SMTPServer.domain.com" /> <bufferSize value="512" /> <lossy value="true" /> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="WARN"/> </evaluator> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> </layout></appender>
这个例子显示了如何配置SmtpAppender提供的所有信息的电子邮件,其中包含每封邮件512(缓冲区大小)的消息。
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> <to value="to@domain.com" /> <from value="from@domain.com" /> <subject value="test logging message" /> <smtpHost value="SMTPServer.domain.com" /> <bufferSize value="512" /> <lossy value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> </layout></appender>
他的例子显示了邮件更详细的格式布局。
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net"> <to value="to@domain.com" /> <from value="from@domain.com" /> <subject value="test logging message" /> <smtpHost value="SMTPServer.domain.com" /> <bufferSize value="512" /> <lossy value="false" /> <evaluator type="log4net.Core.LevelEvaluator,log4net"> <threshold value="WARN" /> </evaluator> <layout type="log4net.Layout.PatternLayout,log4net"> <conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" /> </layout></appender>
SmtpPickupDirAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.SmtpPickupDirAppender.
该SmtpPickupDirAppender类似地配置的SmtpAppender。唯一的区别在于,而不是指定一个SmtpHost参数PickupDir必须被指定。
该PickupDir参数是必须存在并执行附加器的代码必须有权限创建新的文件,并写信给他们这个目录的路径。该路径是相对于应用程序的根目录(AppDomain.BaseDirectory)。
下面的示例显示了如何配置SmtpPickupDirAppender通过SMTP电子邮件提供日志事件。收件人,发件人,主题和PickupDir需要的参数。这个例子显示了如何只提供显著的事件。一个LevelEvaluator指定了警告阈值。这意味着电子邮件将被发送的所记录的每个WARN或更高级别的消息。每封电子邮件也将包含的任何级别高达512(缓冲区大小)以前的消息提供上下文。未发送的邮件将被丢弃。
<appender name="SmtpPickupDirAppender" type="log4net.Appender.SmtpPickupDirAppender"> <to value="to@domain.com" /> <from value="from@domain.com" /> <subject value="test logging message" /> <pickupDir value="C:\SmtpPickup" /> <bufferSize value="512" /> <lossy value="true" /> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="WARN"/> </evaluator> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> </layout></appender>
TraceAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.TraceAppender.
下面的示例显示了如何配置TraceAppender将消息记录到System.Diagnostics.Trace系统。这是.NET基类库提供的跟踪系统。请参阅MSDN文档中的System.Diagnostics.Trace类有关如何配置跟踪系统的更多细节。
<appender name="TraceAppender" type="log4net.Appender.TraceAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
UdpAppender
如需完整的详细信息,请参阅SDK参考条目:log4net.Appender.UdpAppender.
下面的示例显示了如何配置UdpAppender将事件发送到一个RemoteAddress在指定RemotePort。
<appender name="UdpAppender" type="log4net.Appender.UdpAppender"> <localPort value="8080" /> <remoteAddress value="224.0.0.1" /> <remotePort value="8080" /> <layout type="log4net.Layout.PatternLayout, log4net"> <conversionPattern value="%-5level %logger [%property{NDC}] - %message%newline" /> </layout></appender>
DynamicPatternLayout
如需完整的详细信息,请参阅SDK参考条目:log4net.Layout.DynamicPatternLayout.
该DynamicPatternLayout应尽量使用页眉或页脚中应包含可能随时间变化的信息。相比于静态的PatternLayout不每次调用重新评估,将DynamicPatternLayout并重新评估在每个调用的图案。它,例如,允许以包括当前的日期时间中的报头和/或不可能与静态的PatternLayout页脚。
下面的示例显示了如何配置DynamicPatternLayout。
<layout type="log4net.Layout.DynamicPatternLayout"> <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline"/> <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline"/> </layout>
如需完整的详细信息,请参阅SDK参考条目:
log4net学习手册四 Apache log4net?配置实例