介绍日志保存到文本文件和ms sql server的方法
日志信息保存到.txt文件
1 在http://logging.apache.org/log4net/downloads.html”下载
下载incubating-log4net-1.2.10.Zip文件,解压
在log4net-1.2.10\src下面将log4net.sln用Visual Studio.NET打开,编译后可以得到log4net.dll
你在解压的文件夹下面还可以看到examples\net\1.0,你将cs-examples方案打开,将看到多个例子子,是学习的好资料
2 新建项目logweb,添加引用log4net.dll
3 在文件AssemblyInfo.cs下面加入
[assembly:log4net.Config.XmlConfigurator(ConfigFile="web.config",Watch=true)]
其中是ConfigFile="web.config"的web.config是你的配置文件名称,
这将在第5步中提到
你将该代码加入Global.asax文件中的namespace前面也可以
4 在文件Global.asax中
protected void Application_Start(Objectsender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
5 定义配置文件
配置信息可以放在任意的文件中。
可以是在程序的配置文件里,如AssemblyName.config或web.config.
也可以是你取的任意名称的文件AppName.exe.Resc等
log4net框架会在相对于AppDomain.CurrentDomain.BaseDirectory属性定义的目录路径下查找配置文件。框架在配置文件里要查找的唯一标识是<log4net>标签。一个完整的配置文件的例子如下
< log4net debug ="false" > <!-- 定义根日志对象 里面只有两个属性 level 和 appender-ref level 一个 appender-ref 可以多个 即定义支持使用的多个Appender对象 --> < root > < level value ="DEBUG" /> < appender-ref ref ="LogFileAppender" /> </ root > <!-- 具体定义支持某个Appender对象 LogFileAppender为Appender对象的名称 type为Appender对象的类型 有如下的 log4net.Appender.AdoNetAppender; log4net.Appender.UdpAppender; log4net.Appender.ConsoleAppender 在命名空见log4net.Appender下面还有很多 如果下载了,去文件:log4net-1.2.10\doc\release\config-examples.html 上面还有很多例子 不同的Appender对象还有不同的param 具体可以去config-examples.html --> < appender name ="LogFileAppender" type ="log4net.Appender.FileAppender" > <!-- 定义文件和文件的路径 ,特别注意 如果未有指定路径有可能出现错误 ,具体原因目前不清楚 --> < param name ="File" value ="C:\Applog.txt" /> < param name ="datePattern" value ="yyyy-MM-dd HH:mm" /> <!-- --> < param name ="AppendToFile" value ="true" /> <!-- --> < layout type ="log4net.Layout.PatternLayout" > < param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] -%m%n" /> </ layout > </ appender > </ log4net >
我们逐步描述下我们使用的日志:
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
root代表了根日志
<level value="DEBUG" /> 代表了日志级别
在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。
<appender name="LogFileAppender"type="log4net.Appender.FileAppender" >
定义子日志对象 ,不同的Appender对象还有不同的param,具体可以去config-examples.html
6 在界面WebForm1.aspx上面
拖放一个button 在事件里面写如代码:
log4net.ILog log =log4net.LogManager.GetLogger("AA"); //log.Logger.Name
log.Debug("这是我在使用Log4Net");
运行应用程序,点击button 。
在C:\下面打开文件Applog.txt 可以看到我们写的日志
日志信息保存到MSSQL数据库中
1-4步骤与将“日志信息保存到.txt文件”相同
5.建立数据表 假如
CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar] (2000) NULL
)
6 .定义日志文件其中注释处为注意的地方,特注意要写好连接的数据库的字符串。
< configSections > < section name ="log4net" type ="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </ configSections > < log4net debug ="false" > < root > < levelvalue ="ALL" /> < appender-ref ref ="ADONetAppender" /> </ root > <!-- 定义loger的名称和使用的appender --> < logger name ="AA" > < levelvalue ="ALL" /> < appender-ref ref ="ADONetAppender" /> </ logger > < appender name ="ADONetAppender" type ="log4net.Appender.AdoNetAppender" > <!-- 定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存 --> < bufferSize value ="2" /> < connectionType value ="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" /> < connectionStringvalue ="database=Northwind;server=CEC-HUANGXX;UserID=sa;Password=sa" /> < commandText value ="INSERT INTO Log([Date],[Thread],[Level],[Logger],[Message],[Exception]) 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 ="255" /> < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%thread" /> </ layout > </ parameter > < parameter > < parameterName value ="@log_level" /> < dbType value ="String" /> < size value ="50" /> < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%level" /> </ layout > </ parameter > < parameter > < parameterName value ="@logger" /> < dbType value ="String" /> < size value ="255" /> < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%logger" /> </ layout > </ parameter > < parameter > < parameterName value ="@message" /> < dbType value ="String" /> < size value ="4000" /> < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%message" /> </ layout > </ parameter > < parameter > < parameterName value ="@exception" /> < dbType value ="String" /> < size value ="2000" /> < layout type ="log4net.Layout.ExceptionLayout" /> </ parameter > </ appender > </ log4net >
7 在界面WebForm1.aspx上面
拖放一个button 在事件里面写如代码:
log4net.ILog log =log4net.LogManager.GetLogger("AA"); //log.Logger.Name
log.Debug("这是我在使用Log4Net");
运行应用程序,多次点击button 。
在数据库里面去查询,就可以看到日中记录
转载于:https://www.cnblogs.com/tuyile006/archive/2009/07/13/1522689.html
