`

自己写的Log日志记录类,支持文件和数据库,自动建立Log表格

阅读更多

自己写的 Log日志记录类,支持文件和数据库,自动建立Log表格,刚学设计模式,大家别见笑。

文件:ILog.cs代码

using System;

namespace LZ2007.Function.Log
...{
    
/**//// <summary>
    
/// 日志通用接口
    
/// </summary>

    public interface ILog
    
...{
        
void Info(string message, int level);
        
void Info(string message);
        
void Warn(string message, int leave);
        
void Warn(string message);
        
void Debug(string message, int leave);
        
void Debug(string message);
        
void Error(string message, Exception e, int leave);
        
void Error(string message, Exception e);
        
void Fatal(string message, Exception e, int leave);
        
void Fatal(string message, Exception e);
        
void Close();
    }

}

文件LogManage.cs代码

using System;
using System.Data;
using System.Configuration;

namespace LZ2007.Function.Log
...{
    
/**//// <summary>
    
/// 日志工厂类
    
/// </summary>

    public static class LogFactory
    
...{
        
public static ILog GetLog(Type objType)
        
...{
            
int _LogType = Convert.ToInt32(ConfigurationManager.AppSettings["eLogType"]);
            ILog log 
= null;
            
if (_LogType == 1)
            
...{
                log 
= new DataBaseLog(objType);
            }

            
else if(_LogType==0)
            
...{
                log 
= new FileLog(objType);
            }

            
return log;
        }

    }

}
文件DataBaseLog.cs代码
using System;
using System.Data;
using System.Configuration;
using System.Web;

using System.Data.SqlClient;

namespace LZ2007.Function.Log
...{
    
/**//// <summary>
    
/// 数据库日志类.
    
/// </summary>

    public class DataBaseLog : ILog
    
...{
        
私有变量申明#region 私有变量申明
        
private string _LogConnStr;
        
private string _LogObjectSource;

        
private bool _isDebug;
        
private bool _isInfo;
        
private bool _isError;
        
private bool _isWarn;

        
private SqlConnection _sqlConn;

        
public bool IsDebug
        
...{
            
get ...return _isDebug; }
            
set ...{ _isDebug = value; }
        }

        
public bool IsInfo
        
...{
            
get ...return _isInfo; }
            
set ...{ _isInfo = value; }
        }

        
public bool IsError
        
...{
            
get ...return _isError; }
            
set ...{ _isError = value; }
        }

        
public bool IsWarn
        
...{
            
get ...return _isWarn; }
            
set ...{ _isWarn = value; }
        }

        
#endregion


        
public DataBaseLog(Type objType)
        
...{
            _isDebug 
= Convert.ToBoolean(ConfigurationManager.AppSettings["eLogDebug"]);
            _isInfo 
= Convert.ToBoolean(ConfigurationManager.AppSettings["eLogInfo"]);
            _isError 
= Convert.ToBoolean(ConfigurationManager.AppSettings["eLogError"]);
            _isWarn 
= Convert.ToBoolean(ConfigurationManager.AppSettings["eLogWarn"]);
            _LogObjectSource 
= objType.FullName;
            
//_LogType = Convert.ToInt32(ConfigurationManager.AppSettings["eLogType"]);
            _LogConnStr = ConfigurationManager.AppSettings["eLogConnStr"];
            _sqlConn 
= new SqlConnection(_LogConnStr);
            Init();
        }


        
private void Init()
        
...{
            
//检查是否有该表
            string strTest = "select count(name)as a1 from sysobjects where id = object_id(N’[LOGSYSTEM]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1";

            
//建立表
            string strSQL = "CREATE TABLE [dbo].[LOGSYSTEM] (" +
                                
"[lId] [int] IDENTITY (1, 1) NOT NULL ," +
                                
"[lMessage] [nvarchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ," +
                                
"[lLevel] [int] NULL ," +
                                
"[lSource] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
                                
"[lException] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
                                
"[lType] [int] NULL ," +
                                
"[lDate] [datetime] NULL ," +
                                
"[lADDIT1] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
                                
"[lADDIT2] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
                                
"[lADDIT3] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL " +
                            
") ON [PRIMARY]";

            _sqlConn.Open();
            SqlCommand sqlcomm 
= new SqlCommand(strTest, _sqlConn);
            
int i = (int)sqlcomm.ExecuteScalar(); ;
            
if (i == 0)
            
...{
                sqlcomm 
= new SqlCommand(strSQL, _sqlConn);


                sqlcomm.ExecuteNonQuery();
            }

            sqlcomm.Dispose();
        }


        
private int insertLog(string message, int level, string source, string exception, int type)
        
...{

            
string strSQL = "INSERT INTO LOGSYSTEM(lMessage,lLevel,lSource,lException,lType,lDate) " +
                
"VALUES (@lMessage,@lLevel,@lSource,@lException,@lType,@lDate)";
            SqlCommand sqlcomm 
= new SqlCommand(strSQL, _sqlConn);
            
if (_sqlConn.State == ConnectionState.Closed)
            
...{
                _sqlConn.Open();
            }

            sqlcomm.Parameters.Add(
"@lMessage", SqlDbType.NVarChar, 1000);
            sqlcomm.Parameters[
"@lMessage"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lMessage"].Value = message;

            sqlcomm.Parameters.Add(
"@lLevel", SqlDbType.Int);
            sqlcomm.Parameters[
"@lLevel"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lLevel"].Value = level;

            sqlcomm.Parameters.Add(
"@lSource", SqlDbType.NVarChar, 100);
            sqlcomm.Parameters[
"@lSource"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lSource"].Value = source;

            sqlcomm.Parameters.Add(
"@lException", SqlDbType.NVarChar, 100);
            sqlcomm.Parameters[
"@lException"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lException"].Value = exception;

            sqlcomm.Parameters.Add(
"@lType", SqlDbType.Int);
            sqlcomm.Parameters[
"@lType"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lType"].Value = type;

            sqlcomm.Parameters.Add(
"@lDate", SqlDbType.DateTime);
            sqlcomm.Parameters[
"@lDate"].Direction = ParameterDirection.Input;
            sqlcomm.Parameters[
"@lDate"].Value = DateTime.Now;
            
return sqlcomm.ExecuteNonQuery();
        }


        
public void Close()
        
...{
            
this.Info("Log End"5);
            _sqlConn.Close();
        }


display: n
分享到:
评论

相关推荐

    MFC对Oracle数据库操作

    这是一个MFC操作Oracle数据库的例子,里面有两个类。一个类是用来连接和操作数据库的,下载之后可以将你...还有一个类是用来写日志记录的,记录文件在Debug下面的OracleLog.log,这个文件会实时记录你的操作是否成功。

    网管教程 从入门到精通软件篇.txt

    ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASF:Microsoft高级流媒体格式文件 ASM:汇编语言...

    集成目前Android主流优秀第三方组件

    LOG相关工具类(ToolLog.java) 功能待续--&gt;切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片...

    集成安卓主流优秀第三方组件框架.zip

    切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     数据定义语言Data Definition Language(DDL),用来建立数据库、数据对象和定义其列。例如:CREATE、DROP、ALTER等语句。  数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以...

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...

    C#程序开发范例宝典(第2版).part13

    实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider组件调用帮助文件 159 3.6 Process组件 159 实例110 使用Process组件访问本地进程 159 ...

    C#程序开发范例宝典(第2版).part08

    实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider组件调用帮助文件 159 3.6 Process组件 159 实例110 使用Process组件访问本地进程 159 ...

    C#程序开发范例宝典(第2版).part02

    实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider组件调用帮助文件 159 3.6 Process组件 159 实例110 使用Process组件访问本地进程 159 ...

Global site tag (gtag.js) - Google Analytics