效果圖:php
![true | true](http://static.javashuo.com/static/loading.gif)
1:第一步建立SQL表結構
-
CREATE
TABLE [dbo].[LogDetails] (
-
[LogID]
int
NOT
NULL
IDENTITY(
1,
1) ,
-
[LogDate] datetime
NOT
NULL ,
-
[LogThread]
nvarchar(
100)
NOT
NULL ,
-
[LogLevel]
nvarchar(
200)
NOT
NULL ,
-
[LogLogger]
nvarchar(
500)
NOT
NULL ,
-
[LogMessage]
nvarchar(
3000)
NOT
NULL ,
-
[LogActionClick]
nvarchar(
4000)
NULL ,
-
[UserName]
nvarchar(
30)
NULL ,
-
[UserIP]
varchar(
20)
NULL
-
2:建立項目而後下載log4net.dll 在項目中添加引用 http://logging.apache.org/log4net/download_log4net.cgi下載Binaries 下面的html
3:建立 log4net.configweb
-
<?xml version="1.0" encoding="utf-8" ?>
-
-
-
-
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
-
-
-
-
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-
<connectionString value="DATABASE=GoodLook;SERVER=xx.xx.140.170;UID=sa;PWD=123456a;Connect Timeout=30;" />
-
-
<commandText value="INSERT INTO LogDetails ([LogDate],[LogThread],[LogLevel],[LogLogger],[LogActionClick],[LogMessage],[UserName],[UserIP]) VALUES (@log_date, @thread, @log_level, @logger, @ActionsClick, @message,@UserName,@UserIP)" />
-
-
-
<parameterName value="@log_date" />
-
<dbType value="DateTime" />
-
<layout type="log4net.Layout.RawTimeStampLayout" />
-
-
-
-
<parameterName value="@thread" />
-
<dbType value="String" />
-
-
<layout type="log4net.Layout.PatternLayout">
-
<conversionPattern value="%t" />
-
-
-
-
-
<parameterName value="@log_level" />
-
<dbType value="String" />
-
-
<layout type="log4net.Layout.PatternLayout">
-
<conversionPattern value="%p" />
-
-
-
-
-
<parameterName value="@logger" />
-
<dbType value="String" />
-
-
<layout type="log4net.Layout.PatternLayout">
-
<conversionPattern value="%logger" />
-
-
-
-
<parameterName value="@message" />
-
<dbType value="String" />
-
-
<layout type="Log4NetApply.MyLayout">
-
<conversionPattern value="%property{Message}" />
-
-
-
-
<parameterName value="@ActionsClick" />
-
<dbType value="String" />
-
-
<layout type="Log4NetApply.MyLayout" >
-
<conversionPattern value = "%property{ActionsClick}"/>
-
-
-
-
-
<parameterName value="@UserName" />
-
<dbType value="String" />
-
-
<layout type="Log4NetApply.MyLayout" >
-
-
-
<conversionPattern value = "%property{UserName}"/>
-
-
-
-
<parameterName value="@UserIP" />
-
<dbType value="String" />
-
-
<layout type="Log4NetApply.MyLayout" >
-
<conversionPattern value = "%property{UserIP}"/>
-
-
-
-
-
-
-
-
-
-
<appender-ref ref="ADONetAppender" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<appender name="ReflectionLayout" type="log4net.Appender.RollingFileAppender,log4net">
-
-
-
<param name="File" value="D:/Log/" />
-
-
-
<param name="AppendToFile" value="true" />
-
-
-
-
-
-
-
-
-
-
-
-
<param name="StaticLogFileName" value="false" />
-
-
-
<param name="RollingStyle" value="Composite" />
-
-
-
<param name="DatePattern" value="yyyy-MM-dd/"ReflectionLayout.log"" />
-
-
-
-
-
<param name="maximumFileSize" value="500KB" />
-
-
-
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
-
<param name="ConversionPattern" value="記錄時間:%date 線程ID:[%thread] 日誌級別:%-5level 記錄類:%logger 操做者ID:%property{Operator} 操做類型:%property{Action}%n 當前機器名:%property%n當前機器名及登陸用戶:%username %n 記錄位置:%location%n 消息描述:%property{Message}%n 異常:%exception%n 消息:%message%newline%n%n" />
-
-
-
-
-
-
-
4:在Web.config 裏面加 configSections 節點 (CS可直接寫在app.config裏面,或者都寫在一個config裏面)數據庫
-
-
<strong>
<span style="color:#FF0000;">
<configSections>
-
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
-
-
<log4net configSource="log4net.config"/>
</span>
</strong>
-
-
-
<compilation debug="true" targetFramework="4.5" />
-
<httpRuntime targetFramework="4.5" />
-
-
-
5:Properties 屬性下面的AssemblyInfo.cs 追加
必須有這個,不然寫入不到數據庫中
-
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]
-
//注意: ConfigFile 能夠指定相對路徑 和 絕對路徑。 eg: /log/xxxx.log 或者 d://log//xxxx.log
-
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
6:添加 Global.asax
而後在Application_Start 追加 讀取配置程序文件apache
-
protected void Application_Start(object sender, EventArgs e)
-
-
-
XmlConfigurator.Configure();
-
7:建立自定義類 LogPublicClass.cs,爲了方便寫入數據庫中 自定義的一些信息
-
-
using log4net.Layout.Pattern;
-
-
using System.Collections.Generic;
-
-
-
-
-
-
-
-
-
-
-
-
public LogContent(string macAddress, string computerName, string actionsclick, string description)
-
-
-
-
ActionsClick = actionsclick;
-
-
-
-
-
-
-
public
string UserIP {
get;
set; }
-
-
-
-
-
public
string UserName {
get;
set; }
-
-
-
-
-
public
string ActionsClick {
get;
set; }
-
-
-
-
-
public
string Message {
get;
set; }
-
-
-
-
public
class
MyLayout :
PatternLayout
-
-
-
-
this.AddConverter(
"property",
typeof(LogInfoPatternConverter));
-
-
-
-
public
class
LogInfoPatternConverter :
PatternLayoutConverter
-
-
-
protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
-
-
-
-
-
WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
-
-
-
-
-
WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
-
-
-
-
-
-
-
-
-
private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
-
-
object propertyValue =
string.Empty;
-
PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
-
if (propertyInfo !=
null)
-
propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject,
null);
-
-
-
-
8:示例使用
-
-
-
log.Info(
new LogContent(
"127.0.0.1",
"111111",
"登錄系統",
"登錄成功"));
-
var ss =
1 -
int.Parse(
"sss");
-
-
-
-
log.Error(
new LogContent(
"127.0.0.1",
"111111",
"登錄系統", ex.Message+
":"+ex.StackTrace));
-
其餘自行參考下列文章
-
http://www.cnblogs.com/kissazi2/p/3393151.html
-
http://blog.csdn.net/zdw_wym/article/details/48802821
-
http://blog.csdn.net/ydm19891101/article/details/50561638
-
http://www。w2bc。com/Article/70140
-
http://www.cnblogs.com/yuangang/archive/2016/05/16/5497140.html