首先讲把日志保存在数据库中

日志需引用 Log4net程序包

然后配置文件

 1 <configSections>
 2     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 3   </configSections>
 4 
 5   <log4net>
 6     <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
 7       <!--这是log信息记录的缓冲大小,(比如只有log信息记录达到10,
 8       才会将log信息记录写入数据库)-->
 9       <bufferSize value="1" />
10       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
11       <!--<connectionString value="data source=(local);initial catalog=TestDB;integrated security=false;persist security info=True" />-->
12       <connectionString value="DATABASE=LX0830;SERVER=127.0.0.1;UID=sa;PWD=554438;Connect Timeout=15;" />
13       <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
14       <parameter>
15         <parameterName value="@log_date" />
16         <dbType value="DateTime" />
17         <layout type="log4net.Layout.RawTimeStampLayout" />
18       </parameter>
19       <parameter>
20         <parameterName value="@thread" />
21         <dbType value="String" />
22         <size value="100" />
23         <layout type="log4net.Layout.PatternLayout">
24           <conversionPattern value="%t" />
25         </layout>
26       </parameter>
27       <parameter>
28         <parameterName value="@log_level" />
29         <dbType value="String" />
30         <size value="200" />
31         <layout type="log4net.Layout.PatternLayout">
32           <conversionPattern value="%p" />
33         </layout>
34       </parameter>
35       <parameter>
36         <parameterName value="@logger" />
37         <dbType value="String" />
38         <size value="500" />
39         <layout type="log4net.Layout.PatternLayout">
40           <conversionPattern value="%logger" />
41         </layout>
42       </parameter>
43       <parameter>
44         <parameterName value="@message" />
45         <dbType value="String" />
46         <size value="3000" />
47         <layout type="log4net.Layout.PatternLayout">
48           <conversionPattern value="%m" />
49         </layout>
50       </parameter>
51       <parameter>
52         <parameterName value="@exception" />
53         <dbType value="String" />
54         <size value="4000" />
55         <layout type="log4net.Layout.ExceptionLayout" />
56       </parameter>
57     </appender>
58     <!-- setup the root category, add the appenders and set the default level -->
59     <root>
60       <level value="WARN"/>
61       <level value="INFO"/>
62       <level value="DEBUG"/>
63       <level value="FINE"/>
64       <appender-ref ref="ADONetAppender" />
65     </root>
66     <!-- specify the level for some specific categories -->
67     <logger name="iNotes">
68       <level value="WARN"/>
69       <level value="INFO"/>
70       <level value="DEBUG"/>
71       <level value="FINE"/>
72       <appender-ref ref="ADONetAppender"/>
73     </logger>
74     <logger name="StellaLogger">
75       <level value="ALL"/>
76       <appender-ref ref="AdoNetAppender" />
77     </logger>
78   </log4net>
View Code

Global

log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));

在需要使用日志的地方放置如下代码

 1 private static log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 2         private static log4net.ILog log = null;
 3         private static object lockHelper = new object();
 4         public static log4net.ILog Log
 5         {
 6             get
 7             {
 8                 if (log == null)
 9                     lock (lockHelper)
10                         if (log == null)
11                             log = log4net.LogManager.GetLogger("File");
12                 return log;
13             }
14         }
View Code

使用日志

当然 数据库要有相应的表

CREATE TABLE [dbo].[ErrorLog](
    [nid] [int] IDENTITY(1,1) NOT NULL,
    [dtDate] [datetime] NULL,
    [sThread] [varchar](50) NULL,
    [sLevel] [varchar](200) NULL,
    [sLogger] [varchar](200) NULL,
    [sMessage] [varchar](2000) NULL,
    [sException] [varchar](4000) NULL,
 CONSTRAINT [PK_ErrorLog] PRIMARY KEY CLUSTERED 
(
    [nid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

接下来是MD5加密

把以下公共方法放在项目中,加密需要使用下面方法

 1 /// <summary>
 2         /// 32位MD5加密
 3         /// </summary>
 4         /// <param name="password"></param>
 5         /// <returns></returns>
 6         public static string MD5Encrypt32(string password)
 7         {
 8             string cl = password;
 9             string pwd = "";
10             MD5 md5 = MD5.Create(); //实例化一个md5对像
11                                     // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
12             byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
13             // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
14             for (int i = 0; i < s.Length; i++)
15             {
16                 // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
17                 pwd = pwd + s[i].ToString("X");
18             }
19             return pwd;
20         }
View Code

注意 这里使用的form表单提交

不管是登录还是注册在方法中使用上面的MD5方法加密一下就可以了,一个简单的MD5加密就已经完成了

posted on 2018-08-31 19:53  衢阳  阅读(68)  评论(0)    收藏  举报