`

自己写的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
分享到:
评论

相关推荐

    C# 数据库访问与日志类

    5. **NLog**: 类似于log4net,NLog提供了丰富的日志记录和跟踪功能,支持多种日志输出方式,包括文件、数据库、SMTP邮件等。 6. **Serilog**: 这是一个现代、高性能的日志库,具有丰富的输出选项和结构化日志能力。...

    log4j日志记录

    Log4j支持多种输出方式,包括控制台、文件、邮件、数据库等,并且可以通过配置文件灵活调整日志级别、格式以及输出目标。此外,Log4j还支持多语言环境下的日志处理,这意味着不仅限于Java,还可以在C/C++、.Net、PL/...

    java日志处理类,CSS表格样式

    4. **日志切分**:为了防止单个日志文件过大,通常会设置日志文件大小限制,超过后自动创建新的日志文件,这被称为日志滚动。 5. **日志归档和清理**:对于旧的日志文件,可以设定策略进行归档或定期删除,以节省...

    MFC对Oracle数据库操作

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

    apache-log4j-1.2

    8. **自定义日志记录**:Log4j允许用户自定义日志记录行为,例如创建自定义的Appender和Layout,以满足特定的日志处理需求。 9. **性能和可扩展性**:Log4j 1.2.15在设计时考虑了性能和可扩展性,它可以在不影响...

    asp.net文件上传下载程序 有数据库 下载可用

    在数据库方面,提到的"t_file_log.ldf"和"t_file.mdf"是SQL Server数据库的主数据文件和日志文件。这些文件可能包含了关于上传文件的信息,比如文件ID、上传者信息、上传时间等。开发者可能使用了SQL Server的...

    我的数据库,用来记录我将要做的事情

    标题和描述中提到的“我的数据库,用来记录我将要做的事情”显然涉及到个人事务管理和数据库系统的基本概念。这里,我们主要讨论的是一个用于个人任务管理的数据库系统,它可能包括了记录、跟踪以及管理个人待办事项...

    java与jxl、log4j综合运用例子

    2. 然后,使用Log4j配置文件(通常为`log4j.properties`或`log4j.xml`)设置日志记录的级别和目标。 3. 在代码中,通过`Logger`类创建一个日志实例,用于记录程序运行过程中的信息。 4. 对于JXL部分,程序可能会使用...

    Log4j学习笔记,个人整理

    Log4j学习笔记 ...总结,Log4j通过其灵活的架构和强大的功能,使得Java开发者能够方便地进行日志记录和管理。理解并熟练使用Log4j,不仅可以提高开发效率,还能有效提升软件系统的可维护性和稳定性。

    excel表格导入mysql数据库(maven)

    - 日志记录:通常会使用Log4j或SLF4J等日志框架,记录操作过程和异常信息,方便调试和问题排查。 8. **命令行界面或GUI**: - 应用可能提供了命令行界面接收用户输入的Excel文件路径和数据库连接信息,或者一个...

    图书馆示例数据库

    为了保证数据的安全性,他们会实施各种策略,如备份策略、恢复模型(简单、完整或大容量日志记录)、权限控制和加密。 此外,图书馆示例数据库可能还涉及到一些常见的数据库设计原则,如正常化,旨在减少数据冗余并...

    log4j**************************

    相比`System.out.println`,Log4j具有许多优势,例如它允许在运行时动态地打开或关闭日志,可以选择特定包或类的日志输出,可以对日志进行分级,支持多种输出格式,甚至可以将日志信息输出到不同的位置。 要开始...

    Laravel开发-apilog

    3. **自定义日志记录** 可以扩展Monolog处理器,比如创建一个`ApiProcessor`类,用来格式化API日志数据,包含请求头、请求体、响应数据等,并将其注入到日志系统。 4. **日志级别** 根据API操作的重要性和错误...

    asp.net mvc3 dwz框架 完整的日志管理系统 带数据库

    1. **日志记录**:当应用程序遇到异常、执行关键操作或需要调试时,会生成日志条目。这些条目包含时间戳、事件级别(如信息、警告、错误)、源信息以及详细消息。 2. **日志存储**:日志需要被妥善存储,以便后续...

    SQL server2005 数据库管理

    数据库以文件的形式存在于磁盘上,主要分为两类文件:数据库文件和事务日志文件。数据库文件存储数据和数据库对象,而事务日志文件记录所有事务操作,用于数据恢复。 2. **数据库文件类型** - **主数据库文件 (mdf...

    LOG4J的JAR包

    **LOG4J的JAR包**是Java编程环境中一个至关重要的组件,主要用于日志记录。在软件开发过程中,日志记录对于调试、监控系统运行状态和排查错误具有不可忽视的作用。LOG4J是由Apache组织开发的一个开源日志框架,它为...

    log4j.properties参数详解word

    在Java编程中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位问题,优化性能。log4j作为一款强大的日志框架,其配置文件log4j.properties提供了丰富的参数设置,使得日志输出可定制化。本文...

    图书管理系统的数据库

    在数据库方面,系统依赖于两个关键文件:`library_log.ldf`和`library.mdf`,它们是SQL Server数据库的主数据文件和日志文件。 1. **SQL Server数据库**: - `library.mdf`:这是主数据文件,存储了数据库的所有...

    完整实现ftp上传与下载并解析csv文件

    本项目涉及的关键知识点包括FTP客户端的实现、CSV文件的解析、多文件下载与并发处理以及日志记录。以下是对这些核心内容的详细阐述: 1. FTP客户端实现: FTP客户端通常由两部分组成:连接管理(登录、断开连接)...

Global site tag (gtag.js) - Google Analytics