我是一个三层架构的应用程序,将日志记录放在了业务层,并写入了数据库,整个使用操作步骤为以下步骤。
第一步 编写配置文件
文件名称为 log4net.config 内容如下
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=fogwang;database=zzrd;uid=sa;pwd=sa;pooling=false;" />
<commandText value="INSERT INTO LogInfo ([dtDate],[sThread],[sLevel],[sLogger], [ClientIP], [PageUrl],[sMessage],[sException],OpreateType,UserAccount,UIOrSysAdmin,LogType) VALUES (@log_date, @thread, @log_level, @logger, @ClientIP, @PageUrl,@message, @exception,@OpreateType,@UserAccount,@UIOrSysAdmin,@LogType)" />
<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="@ClientIP" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%properties{ClientIP}" />
</layout>
</parameter>
<parameter>
<parameterName value="@PageUrl" />
<dbType value="String" />
<size value="200"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{RequestUrl}" />
</layout>
</parameter>
<parameter>
<parameterName value="@OpreateType" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{OpreateType}" />
</layout>
</parameter>
<parameter>
<parameterName value="@UserAccount" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{UserAccount}" />
</layout>
</parameter>
<parameter>
<parameterName value="@UIOrSysAdmin" />
<dbType value="String" />
<size value="10"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{UIOrSysAdmin}" />
</layout>
</parameter>
<parameter>
<parameterName value="@LogType" />
<dbType value="String" />
<size value="50"></size>
<layout type="log4net.Ext.Web.ReflectionLayout">
<conversionPattern value="%properties{LogType}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="3500" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="3500" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender" />
</root>
<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>
</log4net>
/// <summary>
/// 删除记录
/// </summary>
/// <param name="id">ID(可多个)</param>
/// <returns></returns>
public bool Delete ( string id )
{
DataTable dt= dal.getNewsList("id,title,typename"," in in("+id+")");
log4net.Ext.Web.IWebLog log = log4net.Ext.Web.WebLogManager.GetLogger(typeof(NewsBLL));
log.Info("删除新闻标题:" + dt.Rows[0]["title"] + "新闻编号:" + dt.Rows[0]["id"] + "类别:" + dt.Rows[0]["typename"], WebUtility.Comm.GetAdminOrUIUserCook()[0], WebUtility.Comm.GetIP(), WebUtility.Comm.GetUrl(), log4net.Ext.Web.WebLogImpl.OpreateType.删除, log4net.Ext.Web.WebLogImpl.UIOrSys.后台, log4net.Ext.Web.WebLogImpl.LogType.信息操作日志);
return dal.Delete ( id );
}
#endregion 第四步:读取操作日志: 数据层代码: public class LogOpreateDAL
{
public int Delete(string id)
{
return SqlHelper.ExecuteNonQuery(DBConn.GetSqlConn(), CommandType.Text, "Delete LogInfo Where LogID In(" + id + ")");
} public DataSet GetListByPage(string expcon, int pagesize, int CurrentPage, out int PageCount, out int RecordCount)
{
PagerDAL dal = new PagerDAL();
return dal.GetPagerList(DBConn.GetSqlConn(), "LogInfo", "LogId", 1, "*", pagesize, CurrentPage, expcon, out PageCount, out RecordCount);
} } 显示效果如下:
