• 说说程序中的日志


          大家在写程序时,如何处理与日志相关的事宜。程序中的日志应该怎么写,以下是我的经验与分享

        日志一般用于记录程序运行信息,从而使开发者方便开发调试,了解生产环境执行情况。
    在我看来程序中的日志主要分为两种:异常日志和非异常日志。
    那什么样的日志属于异常日志

    异常日志

    异常日志可以通过记录日志的地方判断,一般异常日志都涉及到异常捕获,我在写程序时两个地方必定会加异常捕获,而异常捕获是记录异常日志的前提。
        1 与数据持久层相关的逻辑
        这部分逻辑涉及到数据库访问,可能出现的问题有数据库连接不存在,开发中很容易出现的数据库连接串写错,数据库用户名密码不合法。或者数据库之间混淆,sql错误,数据连接超时,甚至有数据库已崩溃的情况
        2 需要操作磁盘文件,特别是在服务器断创建文件时,应该特别注意。写文件涉及到程序运行账户必须有写权限,而程序运行账户很可能不具备写权限。我曾经遇到过一种情况:只有程序运行日志记录成功后,程序才能启动,当时又是wcf服务程序,排查原因,相当费劲。
    上述这个问题,程序设计相当不合理,不应该把日志记录和程序启动耦合在一起,但是如果能够捕获异常记录日志,并返回相应的提示,程序会健壮很多。
    下面引出了另一个问题,日志记录的形式和位置
    下面是几种不同的日志记录形式。

    按日期依次记录,每个文件夹下可以按小时生成txt文件,这样记录的日志清晰可读,排查寻找问题比较容易

     

    另一种是使用log4等日志组件,直接写成一个log.txt


    由于程序抓错倾向于在接近用户的层次,在传统的三层模式中即webform.cs文件中。

    下面说说另一种日志,非异常日志

    非异常日志

         非异常日志用的最普遍的地方就是windows服务,windows服务安装程序比较复杂,大多通过控制台命令安装,伴随系统一起启动。
    主要执行多数据库,多系统之间的数据同步,或者异步存储,订单状态改变等后台系统任务。开发者往往根据日志来观察程序的运行情况,这种情况下,运行日志越详细越好。

    如果你觉得我的文章对你有所帮助,请点 【推荐】

    推荐阅读

    一步一步实现网站的多语言版本

    我的程序优化-尽量减少数据库连接操作


     

  • 相关阅读:
    算法的时间复杂度与空间复杂度
    递归八皇后问题(回溯算法)
    vue之插件
    递归之打印、阶乘、九九乘法表、迷宫问题
    选择排序
    归并排序
    sql 字符保留汉字处理
    JAVA filter map groupingBy Collectors
    2021最新版IDEA激活
    WPF 程序退出,进程依然存在
  • 原文地址:https://www.cnblogs.com/needrunning/p/2759279.html
Copyright © 2020-2023  润新知