Log4Net

Web.config-configuration节点内

 <appSettings> <!--日志记录器选择配置,提供给LogManager使用,根据配置记录返回不同日志记录器 Log.Log4Net=Log4NetLogger,Neton.Log4Key=DbLogger Log.Log4Net需要对<log4net>进行配置 Neton.Log4Key需要对Log4Key进行配置--> <add key="LoggerName" value="Log.Log4Net" /> <!-- Log4Key的配置 (开始) --> <!--日志来源,通常是应用程序名称。如:绩效管理。--> <add key="Log4Key.Source" value="程序名称" /> <!--错误级别编号,0=致命错误,1=紧急错误,2=普通错误,3=没有错误,4=成功的级别--> <add key="Log4Key.Level" value="2" /> <!--日志类型,0=使用Windows的日志,1=使用自定义数据库的日志,2=不纪录日志--> <add key="Log4Key.Type" value="1" /> <!--Windows事件日志的类别名称--> <add key="Log4Key.CategoryName" value="程序名称" /> <!--数据库提供者--> <add key="Log4Key.Provider" value="server=数据库地址;uid=sa;pwd=密码;database=数据库名称;Pooling=true" /> <!--数据库日志错误代码编号,0表示无错误代码,正数表示数据库中已经存在的错误代码编号,负数表示抛出异常的错误状态(如果不存在这个错误状态对应的错误代码,数据库会自动创建)。--> <add key="Log4Key.Code" value="0" /> <!--数据库日志类别编号,0表示无类别,正数表示数据库中已经存在的类别编号。--> <add key="Log4Key.CategoryNo" value="0" /> <!-- Log4Key的配置 (结束) --> </appSettings> <log4net> <!--定义输出到文件中--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置-当前项目中文件目录--> <file value="File/" /> <!--是否追加到文件--> <appendToFile value="true" /> <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date" /> <!--使用Unicode编码--> <Encoding value="UTF-8" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <param name="MaxSizeRollBackups" value="10" /> <!--是否只写到一个文件中--> <param name="StaticLogFileName" value="false" /> <!--按日期产生文件夹和文件名[在日期方式与混合方式下使用]--> <!--此处按日期产生文件夹,文件名固定。注意" 的位置--> <param name="DatePattern" value=""newsinformation"yyyy-MM-dd".log"" /> <!--每个文件的大小。只在混合方式与文件大小方式下使用。 超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。 可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志--> <param name="maximumFileSize" value="10MB" /> <!--计数类型为1,2,3…--> <param name="CountDirection" value="1" /> <!--过滤设置,LevelRangeFilter为使用的过滤器。 --> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="FATAL" /> </filter> <layout type="log4net.Layout.PatternLayout"> <!--输出格式--> <!--样例:记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" --> <conversionPattern value="%date [%thread] %-5level %username %message%newline" /> </layout> </appender> <!--定义输出到控制台命令行中--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!--定义输出到windows事件中--> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!--定义输出到数据库中--> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <!--过滤设置,LevelRangeFilter为使用的过滤器。 --> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="FATAL" /> </filter> <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库--> <bufferSize value="1" /> <!--引用--> <connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" /> <!--连接数据库字符串--> <connectionString value="server=数据库地址;uid=sa;pwd=密码;database=数据库名称;Pooling=true" /> <commandText value="INSERT INTO 数据库表名称 ([Event_Level],[Remark],[CreateTime],[Event_Source]) VALUES (1,@message,@logDate, ‘程序名称‘)" /> <!--定义各个参数--> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="24000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message %exception" /> </layout> </parameter> <parameter> <parameterName value="@logDate" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> </appender> <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。--> <root> <!--文件形式记录日志--> <appender-ref ref="LogFileAppender" /> <!--控制台控制显示日志--> <!--<appender-ref ref="ConsoleAppender" />--> <!--Windows事件日志--> <!--<appender-ref ref="EventLogAppender" />--> <!--数据库--> <appender-ref ref="AdoNetAppender" /> </root> <logger name="Log.Log4Net"> <level value="WARN" /> </logger> </log4net>

程序简单调用

 ILog log = LogManager.GetLogger(ConfigurationManager.AppSettings["LoggerName"]); //记录错误日志 log.Error("error", new Exception("这个文本会记录在数据库Remark也会在文本")); ////记录严重错误 log.Fatal("fatal", new Exception("这个文本会记录在数据库Remark也会在文本")); ////记录警告信息 log.Warn("warn");

  

相关文章