log4net配置文件:log4net的架构文件来源: 发布时间:星期四, 2009年2月12日 浏览:160次 评论:0
直在用log4net来记录日志但每次都是把的前写好配置文件拷贝份稍加修改按说这样也没什么但每次都看VS提示票找不到框架信息搞我排错都很困难很不爽于是尝试上网搜个架构文件但下来看写很简单大不到我需求于是自己就写个并加入了些约束条件、候选值、默认值什么这回可以像.net里智能提示样来操作log4net配置 类似如下额引用那么配置文件里些元素就可以有自动提示完成功能了 <log4net debug="false" xmlns="dxz:log4net" xmlns:l="dxz:log4net"> </log4net> 方便了很多下面贴出来代码拷贝下面代码保存为log4net.xsd拷贝到 C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas下按照上面引入思路方法就可以实现想编辑web.comfig或App.config文件样有自动提示功能很好用 <?xml version="1.0" encoding="gb2312"?> <!-- 作者:dxzhan Email:[email protected] QQ:147977032 修改时间:2008-12-09 授权:这是个log4net架构文件您可以任意使用和散播此文件副本同时您使用此文件造成任何后果由您自己负责 您使用此架构文件前提是必须保留此授权 任何有在此基础上进行改进地方使用人有义务知会作者共同进步 使用介绍说明:将此文件拷贝到X:\Program Files\Microsoft Visual Studio 8\Xml\Schemas下 在log4net配置文件里加入类似如下命名空间引入 <log4net debug="false" xmlns="dxz:log4net" xmlns:l="dxz:log4net"> </log4net> 即可享受像使用VS自带配置文件样元素属性自动提示、候选值、默认值等功能 --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="dxz:log4net" xmlns="dxz:log4net" elementFormDefault="qualied"> <xs:element name="level"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value" use="required"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="OFF" /> <xs:enumeration value="FATAL" /> <xs:enumeration value="ERROR" /> <xs:enumeration value="WARN" /> <xs:enumeration value="INFO" /> <xs:enumeration value="DEBUG" /> <xs:enumeration value="ALL" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="appender-ref"> <xs:complexType> <xs:attribute name="ref" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="bufferSize"> <xs:complexType> <xs:attribute name="value" type="xs:decimal" use="required" /> </xs:complexType> </xs:element> <xs:element name="connectionType"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value=".Data.OracleClient.OracleConnection, .Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <xs:enumeration value=".Data.SqlClient.SqlConnection, .Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <xs:enumeration value="IBM.Data.DB2.DB2Connection,IBM.Data.DB2, Version=8.1.2.1" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="connectionString"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value" use="required"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="data source=[mydatabase];User ID=[user];Password=[password]" /> <xs:enumeration value="data source=[database server];initial catalog=[database name];egrated security=false;persist security info=True;User ID=[user];Password=[password]" /> <xs:enumeration value="server=127.0.0.1;database=dbuser;user Id=username;password=password;persist security info=true" /> <xs:enumeration value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\log\access.mdb;User Id=;Password=;" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="commandText"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <xs:enumeration value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> <xs:enumeration value="INSERT INTO Log (Datetime,Thread,Log_Level,Logger,Message) VALUES (:log_date, :thread, :log_level, :logger, :message)" /> <xs:enumeration value="INSERT INTO myschema.Log (Date,Thread,Level,Logger,Message,Exception) VALUES (@log_date,@thread,@log_level,@logger,@message,@exception)" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:sequence> <xs:element name="parameterName"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="dbType"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value" use="required"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="DateTime" /> <xs:enumeration value="String" /> <xs:enumeration value="Boolean" /> <xs:enumeration value="Byte" /> <xs:enumeration value="Decimal" /> <xs:enumeration value="Double" /> <xs:enumeration value="Int16" /> <xs:enumeration value="Int32" /> <xs:enumeration value="Int64" /> <xs:enumeration value="Binary" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element minOccurs="0" name="size"> <xs:complexType> <xs:attribute name="value" type="xs:decimal" use="required" /> </xs:complexType> </xs:element> <xs:element ref="layout" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="layout"> <xs:complexType> <xs:sequence minOccurs="0"> <xs:choice maxOccurs="unbounded"> <xs:element name="conversionPattern"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="%date %line %message %line %-20file %-5line %line" /> <xs:enumeration value="%date - %message %line" /> <xs:enumeration value="%date [%thread] %-5level %logger [%property{NDC}] - %message%line" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="param"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="name"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="Header" /> <xs:enumeration value="Footer" /> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="------------------------------------------[Header]-----------------------------------------" /> <xs:enumeration value="------------------------------------------[Footer]-----------------------------------------" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:choice> </xs:sequence> <xs:attribute name="type" type="xs:" use="optional" default="log4net.Layout.PatternLayout" /> </xs:complexType> </xs:element> <xs:element name="mapping"> <xs:complexType> <xs:sequence> <xs:choice> <xs:element ref="level" /> <xs:element minOccurs="0" name="foreColor"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="backColor"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element minOccurs="0" name="attributes"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="file"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value" use="required"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="log\Error.log" /> <xs:enumeration value="\log\${TMP}\Error.log" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="appendToFile"> <xs:complexType> <xs:attribute name="value" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> <xs:element name="rollingStyle"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:"> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:"> <xs:enumeration value="Once" /> <xs:enumeration value="Size" /> <xs:enumeration value="Date" /> <xs:enumeration value="Composite" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="maxSizeRollBackups"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="maximumFileSize"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="filter"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="param"> <xs:complexType> <xs:attribute name="name" type="xs:" use="required" /> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="type" type="xs:" use="optional" default="log4net.Filter.LevelRangeFilter"/> </xs:complexType> </xs:element> <xs:element name="lossy"> <xs:complexType> <xs:attribute name="value" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> <xs:element name="evaluator"> <xs:complexType> <xs:sequence> <xs:element name="threshold"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="ERROR" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="type" type="xs:" use="optional" default="log4net.Core.LevelEvaluator" /> </xs:complexType> </xs:element> <xs:element name="target"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="applicationName"> <xs:complexType> <xs:attribute name="value" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="encoding"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="unicodeFFFE" /> </xs:complexType> </xs:element> <xs:element name="lockingModel"> <xs:complexType> <xs:attribute name="type" type="xs:" use="optional" default="log4net.Appender.FileAppender+MinimalLock" /> </xs:complexType> </xs:element> <xs:element name="threshold"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="true" /> </xs:complexType> </xs:element> <xs:element name="onlyFixPartialEventData"> <xs:complexType> <xs:attribute name="value" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> <xs:element name="server"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="SQUARE" /> </xs:complexType> </xs:element> <xs:element name="recipient"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="nicko" /> </xs:complexType> </xs:element> <xs:element name="sink"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="tcp://localhost:8085/LoggingSink" /> </xs:complexType> </xs:element> <xs:element name="LogFileName"> <xs:complexType> <xs:attribute name="value" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> <xs:element name="datePattern"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="yyyyMMdd-HHmm" /> </xs:complexType> </xs:element> <xs:element name="to"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="to@do.com" /> </xs:complexType> </xs:element> <xs:element name="from"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="from@do.com" /> </xs:complexType> </xs:element> <xs:element name="subject"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="test logging message" /> </xs:complexType> </xs:element> <xs:element name="smtpHost"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="SMTPServer.do.com" /> </xs:complexType> </xs:element> <xs:element name="pickupDir"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="C:\SmtpPickup" /> </xs:complexType> </xs:element> <xs:element name="localPort"> <xs:complexType> <xs:attribute name="value" type="xs:decimal" use="required" /> </xs:complexType> </xs:element> <xs:element name="remoteAddress"> <xs:complexType> <xs:attribute name="value" type="xs:" use="optional" default="127.0.0.1" /> </xs:complexType> </xs:element> <xs:element name="remotePort"> <xs:complexType> <xs:attribute name="value" type="xs:decimal" use="required" /> </xs:complexType> </xs:element> <xs:element name="log4net"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="appender"> <xs:complexType> <xs:sequence> <xs:choice maxOccurs="unbounded"> <xs:element ref="bufferSize" /> <xs:element ref="connectionType" /> <xs:element ref="connectionString" /> <xs:element ref="commandText" /> <xs:element ref="parameter" maxOccurs="unbounded" /> <xs:element ref="mapping" maxOccurs="unbounded" /> <xs:element ref="file" /> <xs:element ref="appendToFile" /> <xs:element ref="rollingStyle" /> <xs:element ref="maxSizeRollBackups" /> <xs:element ref="maximumFileSize" /> <xs:element ref="layout" /> <xs:element ref="filter" /> <xs:element ref="appender-ref" /> <xs:element ref="lossy" /> <xs:element ref="evaluator" /> <xs:element ref="target" /> <xs:element ref="applicationName" /> <xs:element ref="encoding" /> <xs:element ref="lockingModel" /> <xs:element ref="threshold" /> <xs:element ref="onlyFixPartialEventData" /> <xs:element ref="server" /> <xs:element ref="recipient" /> <xs:element ref="sink" /> <xs:element ref="LogFileName" /> <xs:element ref="datePattern" /> <xs:element ref="to" /> <xs:element ref="from" /> <xs:element ref="subject" /> <xs:element ref="smtpHost" /> <xs:element ref="pickupDir" /> <xs:element ref="localPort" /> <xs:element ref="remoteAddress" /> <xs:element ref="remotePort" /> </xs:choice> </xs:sequence> <xs:attribute name="name" type="xs:" use="required" /> <xs:attribute name="type" type="xs:" use="required" /> </xs:complexType> </xs:element> <xs:element name="root" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element ref="level" /> <xs:element ref="appender-ref" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element maxOccurs="unbounded" name="logger"> <xs:complexType> <xs:sequence> <xs:element ref="level" /> <xs:element minOccurs="0" maxOccurs="unbounded" ref="appender-ref" /> </xs:sequence> <xs:attribute name="name" type="xs:" use="required" /> <xs:attribute name="additivity" type="xs:boolean" use="optional" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="debug" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> </xs:schema> 0
相关文章读者评论发表评论 |