1 配置文件 app.config 2 3 <?xml version="1.0" encoding="utf-8" ?> 4 <configuration> 5 6 <!-- Register a section handler for the log4net section --> 7 <configSections> 8 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 9 </configSections> 10 <log4net> 11 <!-- Define some output appenders --> 12 13 <!--定义输出到文件中-->///////////////////////////////////////////////////////// 14 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 15 <!--定义文件存放位置--> 16 <file value="log\"/> 17 <appendToFile value="true"/> 18 <rollingStyle value="Date"/> 19 <datePattern value="yyyyMM\yyyyMMdd'.txt'"/> 20 <staticLogFileName value="false"/> 21 <param name="MaxSizeRollBackups" value="100"/> 22 <layout type="log4net.Layout.PatternLayout"> 23 <!--<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> : %newline%message%newline%newline" />--> 24 <conversionPattern value="==== %date [%thread] %-5level ==== : %newline%message%newline%newline" /> 25 </layout> 26 </appender> 27 28 <!--Sql server Appender -->////////////////////////////////////////////////////////////////////////////////////////// 29 <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender"> 30 <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 --> 31 <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 --> 32 <bufferSize value="0" /> 33 <!--访问数据库驱动的引用--> 34 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 35 <!--数据库连接字符串--> 36 <connectionString value="server=.;database=Log4Net;uid=sa;password=123.com;"/> 37 <!--数据库执行的Sql语句--> 38 <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 39 <!-- 日志记录时间,RawTimeStampLayout为默认的时间输出格式 --> 40 <parameter> 41 <parameterName value="@log_date" /> 42 <dbType value="DateTime" /> 43 <layout type="log4net.Layout.RawTimeStampLayout" /> 44 </parameter> 45 <!--线程号--> 46 <parameter> 47 <parameterName value="@thread" /> 48 <dbType value="String" /> 49 <size value="255" /> 50 <layout type="log4net.Layout.PatternLayout"> 51 <conversionPattern value="%thread" /> 52 </layout> 53 </parameter> 54 <!--日志等级 级别从低到高分别是:debug(调试),info(信息),warn(警告),error(错误),fatal(致命错误)--> 55 <parameter> 56 <parameterName value="@log_level" /> 57 <dbType value="String" /> 58 <size value="50" /> 59 <layout type="log4net.Layout.PatternLayout"> 60 <conversionPattern value="%level" /> 61 </layout> 62 </parameter> 63 <!--产生日志的类--> 64 <parameter> 65 <parameterName value="@logger" /> 66 <dbType value="String" /> 67 <size value="255" /> 68 <layout type="log4net.Layout.PatternLayout"> 69 <conversionPattern value="%logger" /> 70 </layout> 71 </parameter> 72 <!----> 73 <parameter> 74 <parameterName value="@message" /> 75 <dbType value="String" /> 76 <size value="4000" /> 77 <layout type="log4net.Layout.PatternLayout"> 78 <conversionPattern value="%message" /> 79 </layout> 80 </parameter> 81 <parameter> 82 <parameterName value="@exception" /> 83 <dbType value="String" /> 84 <size value="2000" /> 85 <layout type="log4net.Layout.ExceptionLayout" /> 86 </parameter> 87 </appender> 88 89 <!-- Setup the root category, add the appenders and set the default level --> 90 <root> 91 <level value="ALL" /> 92 <appender-ref ref="RollingLogFileAppender" /> 93 <appender-ref ref="AdoNetAppender_SqlServer" /> 94 </root> 95 96 </log4net> 97 </configuration> 98 99 100 101 102 103 104 105 ///////////////////////////////////////////////////////////////////////////////////////// 106 107 form1 的代码 108 109 using log4net; 110 using System; 111 using System.Collections.Generic; 112 using System.Linq; 113 using System.Text; 114 using System.Threading.Tasks; 115 116 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = true)]//////////////ConfigFile = "Content/Config/Log4Net.config" 意思是配置文件的目录 117 namespace Com.No1.Log4Net.SqlServer 118 { 119 class Program 120 { 121 protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 122 static void Main(string[] args) 123 { 124 for (int i = 0; i < 101; i++) 125 { 126 logger.Debug("Test" + i); 127 } 128 } 129 } 130 } 131 132 133 134 //////////////////////////////////////////////创建数据库表 135 CREATE TABLE [dbo].[Log4Net]( 136 [Id] [bigint] IDENTITY(1,1) NOT NULL, 137 [Date] [datetime2](7) NULL, 138 [Thread] [varchar](255) NULL, 139 [Level] [varchar](255) NULL, 140 [Logger] [varchar](255) NULL, 141 [Message] [varchar](255) NULL, 142 [Exception] [varchar](255) NULL, 143 CONSTRAINT [PK_Log4Net] PRIMARY KEY CLUSTERED 144 ( 145 [Id] ASC 146 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 147 ) ON [PRIMARY] 148 149 GO