config配置
<xml version="1.0"> <configuration> <configSections> <!--配置一个结点 名称为log4net--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <!-- 【log4net 配置节】 1、符号的特殊意义: %m[%message] :输出的日志消息 %n:换行 %d[%datetime]:输出当前语句运行的时刻 %r :输出程序从运行到执行到当前语句时消耗的毫秒数 %d:当前语句所在的线程ID %p :日志的当前优先级别 %c:当前日志对象的名称 %L :输出语句所在的行号 %F:输出语句所在的文件名 %-数字:表示该项的最小长度,如果不够,则用空格填充。 2、几个级别: FATAL毁灭级别、ERROR错误级别、WARN警告级别、INFO消息级别、DEBUG调试级别 这几种日志级别FATAL> ERROR> WARN> INFO>DEBUG 只有日志输出级别大于或等于配置的级别才能输出日志信息 --> <log4net> <!--记录日志到数据库--> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <!-- bufferSize,缓存sql的条数; 只有日志sql 大于等于 设置的条数后才执行插入到数据库中的操作; 如果为0,表示 立刻执行插入数据库操作,或者程序/网站 关闭后 执行插入操作 --> <bufferSize value="0" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <!--数据库连接字符串--> <connectionString value="server=.;database=Movies;integrated security=false;persist security info=True;uid=sa;pwd=123456;" /> <!--插入到数据库的sql格式定义--> <commandText value="INSERT INTO Sys_Log (LogDate,LogThread,LogLevel,LogLogger,LogMessage,LogException) 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="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%t" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="200" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%p" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="200" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%m" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> <!--记录日志到文件--> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <!--日志路径--> <file value="Record.log"></file> <appendToFile value="true"></appendToFile> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[时间]:%d%n[级别]:%p%n[对象]:%c%n[内容]:%m%n%n"></conversionPattern> </layout> </appender> <!--记录日志到控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[时间]:%d%n[级别]:%p%n[对象]:%c%n[内容]:%m%n%n"></conversionPattern> </layout> </appender> <!-- 默认的日志对象配置 level:指定日志的输出级别 appender-ref:引用哪些附着器 --> <root> <level value="Info"></level> <appender-ref ref="FileAppender"></appender-ref> <appender-ref ref="ConsoleAppender"></appender-ref> <appender-ref ref="ADONetAppender"></appender-ref> </root> <!-- 指定的日志对象配置 level:指定日志的输出级别 appender-ref:引用哪些附着器 --> <logger name="MyLogger"> <level value="Info"></level> <appender-ref ref="FileAppender"></appender-ref> <appender-ref ref="ConsoleAppender"></appender-ref> <appender-ref ref="ADONetAppender"></appender-ref> </logger> </log4net> </configuration>
日志记录表结构
/*Log4net 日志记录表结构*/ CREATE TABLE [dbo].[Sys_Log] ( [Id] [int] IDENTITY (1, 1) NOT NULL , [LogDate] [datetime] NOT NULL , [LogThread] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [LogLevel] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL , [LogLogger] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL , [LogMessage] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NOT NULL , [LogException] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[Sys_Log] WITH NOCHECK ADD CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED ( [Id] ) ON [PRIMARY] GO