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