美文网首页RDIFramework.NETAndroid知识笔试&&面试经验
RDIFramework.NET ━ .NET快速信息化系统开发

RDIFramework.NET ━ .NET快速信息化系统开发

作者: NET快速开发框架 | 来源:发表于2017-03-05 11:24 被阅读26次
    有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件。3.2版本我们在框架底层新增了记录框架运行的所有SQl过程保存到用户指定的地方以便分析查看,只需要在配置文件把配置项”LogSQL”设置为True即可。框架会自动记录各常用数据库如:Oracle、SqlServer、MySQL等的操作情况。  一、Web记录Sql执行情况  1、在我们的Web项目中要记录SQL可以在Web的配置文件中设置LogSql配置项为True,默认为False,配置文件的位置MVC项目是在RDIFramework.MvcApp项目根目录下的XmlConfig文件夹下的system.config文件,WebForm项目是在RDIFramework.WebApp项目根目录下的Web.Config文件,设置配置项如下图所示:

      只要设置LogSQL为True,框架就会自动记录所有Sql执行过程并保存到指定目录,一般默认在Web项目根目录的Log文件夹下,如下图:



      2、查看记录的Sql。
      打开一个文件,查年记录的Sql情况,如下:

      二、WinForm记录Sql执行情况
      WinForm项目记录Sql与Web类似,一样的要修改Config.xml中的记录Sql的配置项,如下图所示。



      通过上面的配置后,一样的我们打开框架做一些操作后查看记录的Sql情况,如下图:

      三、公共方法调用
      如果我们需要单独记录sql的执行情况,可以调用框架提供的公共接口,如下图所示:

      下面把写日志的三个公共接口分享,需要的可以参考哟。
    1
    2

    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83

    region public virtual void WriteLog(string commandText, string fileName = null) 写入sql查询句日志

    /// <summary>

    /// 写入sql查询句日志

    /// </summary>

    /// <param name="commandText"></param>

    public
    virtual
    void
    WriteLog(
    string
    commandText)

    {

    string
    fileName = DateTime.Now.ToString(SystemInfo.DateFormat) +
    " _ "

    this
    .FileName;

    WriteLog(commandText, fileName);

    }

    /// <summary>

    /// 写入sql查询句日志

    /// </summary>

    /// <param name="commandText">异常</param>

    /// <param name="fileName">文件名</param>

    public
    virtual
    void
    WriteLog(
    string
    commandText,
    string
    fileName =
    null
    )

    {

    if
    (
    string
    .IsNullOrEmpty(fileName))

    {

    fileName = DateTime.Now.ToString(SystemInfo.DateFormat) +
    " _ "

    this
    .FileName;

    }

    string
    returnValue =
    string
    .Empty;

    // 系统里应该可以配置是否记录异常现象

    if
    (!SystemInfo.LogSQL)

    {

    return
    ;

    }

    // 将异常信息写入本地文件中

    string
    logDirectory = SystemInfo.StartupPath +
    @"\Log\Query"
    ;

    if
    (!System.IO.Directory.Exists(logDirectory))

    {

    System.IO.Directory.CreateDirectory(logDirectory);

    }

    string
    writerFileName = logDirectory +
    "\"

    • fileName;

    if
    (!File.Exists(writerFileName))

    {

    FileStream FileStream =
    new
    FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

    FileStream.Close();

    }

    StreamWriter streamWriter =
    new
    StreamWriter(writerFileName,
    true
    , Encoding.Default);

    streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) +
    " "

    • commandText);

    streamWriter.Close();

    }

    public
    virtual
    void
    WriteLog(
    string
    commandText, IDbDataParameter[] dbParameters =
    null
    ,
    string
    fileName =
    null
    )

    {

    // 系统里应该可以配置是否记录异常现象

    if
    (!SystemInfo.LogSQL)

    {

    return
    ;

    }

    if
    (
    string
    .IsNullOrEmpty(fileName))

    {

    fileName = DateTime.Now.ToString(SystemInfo.DateFormat) +
    " _ "

    • FileName;

    }

    string
    message =
    string
    .Empty;

    message = DateTime.Now.ToString(SystemInfo.DateTimeFormat) + System.Environment.NewLine +
    "commandText内容"

    • System.Environment.NewLine + commandText;

    if
    (dbParameters !=
    null
    )

    {

    StringBuilder sb =
    new
    StringBuilder();

    foreach
    (
    var
    parameter
    in
    dbParameters)

    {

    sb.AppendLine(parameter.ParameterName +
    "="

    • parameter.Value);

    }

    message += System.Environment.NewLine +
    "dbParameters内容"

    • System.Environment.NewLine + sb.ToString();

    }

    string
    logDirectory = SystemInfo.StartupPath +
    @"\Log\Query"
    ;

    if
    (!System.IO.Directory.Exists(logDirectory))

    {

    System.IO.Directory.CreateDirectory(logDirectory);

    }

    string
    writerFileName = logDirectory +
    "\"

    • fileName;

    if
    (!File.Exists(writerFileName))

    {

    FileStream FileStream =
    new
    FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

    FileStream.Close();

    }

    StreamWriter streamWriter =
    new
    StreamWriter(writerFileName,
    true
    , Encoding.Default);

    streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) +
    " "

    • message);

    streamWriter.Close();

    }

    endregion

    作者: **EricHu
    **出处:http://www.cnblogs.com/huyong/ Email:406590790@qq.com QQ交流:406590790 框架官网:http://www.rdiframework.net/ 框架官网博客:http://blog.rdiframework.net/ 框架其他博客:http://blog.csdn.net/chinahuyong http://www.cnblogs.com/huyong RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于 RDIFramework.NET 框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。
    欢迎关注RDIFramework.NET框架官方公众微信(微信号:guosisoft),及时了解最新动态。

    扫描二维码立即关注

    image

    相关文章

      网友评论

        本文标题:RDIFramework.NET ━ .NET快速信息化系统开发

        本文链接:https://www.haomeiwen.com/subject/yjmsgttx.html