首页
学习
活动
专区
圈层
工具
发布

每日一博 - 关于日志记录的最佳实践

函数出口打印返回值及时间等 函数入参记录: 使用log.debug()记录函数的入参时,将整个请求对象req作为参数传入,确保了记录了函数的所有入参信息。...这样做的好处是保留了关键有效的日志信息,同时避免了记录过多的日志导致日志文件过大。...这样可以将异常信息记录在日志中,方便查看和分析,同时保持日志的规整性和可读性。...对于重复的日志,可以直接删除或者将其级别设置为debug,这样就不会在生产环境中打印出这些冗余的信息。..."); // TODO 业务逻辑 ... } 正例中的日志携带了业务相关的信息,如用户ID和日志链路ID,这样可以在出现异常时更容易地定位到具体的业务场景,有利于快速解决问题。

66600
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 开发者需要知道的完美终端工具

    如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。...log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。 Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。...下面是相同的示例,输出与比上表小的终端上: 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...(syntax) 输出如下: 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。 下面是在 OSX(与 Linux 类似)上的外观:

    1.2K10

    专属Python开发者的完美终端工具

    注意其中的 log_locals 参数会输出一个表格,该表格包含调用 log 方法的局部变量。 log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。...Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。下面是输出示例: ? # 6....# 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...# 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。 下面是在 OSX(与 Linux 类似)上的外观: ?

    1.2K10

    专属Python开发者的完美终端工具

    如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。...log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。 Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。...下面是相同的示例,输出与比上表小的终端上: # 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...(syntax) 输出如下: # 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。

    1.2K40

    专属 Python 开发者的完美终端工具

    如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。...log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。 Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。...下面是相同的示例,输出与比上表小的终端上: # 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...(syntax) 输出如下: # 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。

    1.6K30

    专属Python开发者的完美终端工具

    如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。...log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。 Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。...下面是相同的示例,输出与比上表小的终端上: 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...(syntax) 输出如下: 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。 下面是在 OSX(与 Linux 类似)上的外观:

    1.1K40

    Python开发者的完美终端工具

    如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。...log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。 Logging 处理程序 你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。...下面是相同的示例,输出与比上表小的终端上: # 8.进度条 Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。 基本用法:用 track 函数调用程序并迭代结果。...(syntax) 输出如下: # 12.错误回溯(traceback) Rich 可以渲染漂亮的错误回溯日志,比标准的 Python 回溯更容易阅读,并能显示更多代码。...你可以将 Rich 设置为默认的回溯处理程序,这样所有异常都将由 Rich 为你呈现。 下面是在 OSX(与 Linux 类似)上的外观:

    1.6K20

    Rich:终端打印富文本

    想象一下,如果你的终端输出能够像现代网页一样丰富多彩,是不是会带给你更愉快的开发体验? 这时,一个强大的库——Rich——悄然走进了你的视野。...它让颜色和样式的添加变得异常简单,不仅如此,它还可以渲染表格、进度条,甚至是 Markdown 和语法高亮的代码!...基本打印 Rich 让在应用程序中添加丰富的输出变得非常容易。 你可以使用与内置 Python 函数具有相同签名的 rich.print 方法。...此处省略其他列和行的添加 console.print(table) 进度条 当你有长时间运行的任务时,Rich 能渲染出平滑动态的进度条,让你清晰地看到每项任务的完成情况。...实践 现在,为了更好地掌握 Rich 这个强大的库,你可以尝试以下一些练习: 创建一个富文本日志记录器,并使用它来记录你的应用程序活动。 试着构建一个表格,并在其中填入一些虚拟数据。

    42610

    Python 自动化指南(繁琐工作自动化)第二版:十一、调试

    Python 的logging模块使得创建您编写的定制消息的记录变得容易。这些日志消息将描述程序执行到达日志函数调用的时间,并列出您在该时间点指定的任何变量。...禁用日志记录 调试完程序后,您可能不希望所有这些日志消息塞满屏幕。logging.disable()函数禁用这些,这样你就不必进入你的程序,手动删除所有的日志调用。...这样,您可以很容易地找到它来注释掉或取消注释调用,以根据需要启用或禁用日志消息。 记录到一个文件 您可以将日志消息写入文本文件,而不是显示在屏幕上。...虽然记录消息很有帮助,但是它们会使你的屏幕变得杂乱,并且很难阅读程序的输出。将日志信息写到一个文件中会保持你的屏幕清晰,并存储这些信息,这样你可以在运行程序后阅读它们。...logging模块是在代码运行时查看代码的好方法,并且比print()函数使用起来更方便,因为它有不同的日志记录级别和记录到文本文件的能力。 调试器让你一次一行地通过你的程序。

    2.2K40

    Java程序员容易犯的10大低级错误

    异常产生后,必须在日志中以ERROR或以上级别记录异常栈,否则会导致异常栈丢失,无法确认异常产生的位置。并不需要在每次捕获异常时都记录异常日志,这样可能导致异常被多次重复记录,影响问题的定位。...但异常发生后其异常栈必须至少被记录一次。 和注释一样,日志也不是越多越好。无用的冗余日志不但不能帮助定位问题,还会干扰问题的定位。而错误的日志更是会误导问题,必须杜绝。...甚至还有错误的日志会干扰问题的定位: public voidsaveProduct1(ProductServiceStruct product) { log.debug("enter method...将数字定义为常量的最终目的是为了使代码更容易理解,所以并不是只要将数字定义为常量就不是魔鬼数字了。如果常量的名称没有意义,无法帮助理解代码,同样是一种魔鬼数字。...在进行常量和变量的相等判断时,建议将常量定义为Java对象封装类型(如将int类型的常量定义为Integer类型),这样在比较时可以将常量放在左边,调用equals方法进行比较,可以省去不必要的判空。

    62910

    面试系列-binary log

    binlog 二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。...优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能; 在配置文件里面加入配binlog_format=statement,然后重启服务; 注意点:now(...row:基于行的复制(row-based replication, RBR) 不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。...,然后重启服务器即可开启; 通过binlog恢复数据 执行命令 flush logs 开启新的日志记录,这样我们就不会收到后面操作的干扰; show binlog events in 'mysql-bin...=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘;

    31020

    还在用 print?试一试 logging 的强大!

    、变量的命名各种各样、函数名也是,或者赋值符号两边不加空格、不符合软件工程规范:高内聚低耦合啥的,这类还有很多,培训班出来的有很大一部分都这样,这么说不是没有原因的,培训班老师自己偷懒或者本身就不会,写代码的时候不注意规范...在想之前呢,我们需要了解一个信息,就是我们一般小白和机构中最经常用,那就是 print 这个函数来输出一些运行的信息,然后在控制台观察,如果需要还可以在输出的时候重定向到文件输出流保存到文件中,这样其实是非常不规范的...info 的优先级,当这显然不是我们所需要的; 运行模块信息等信息; 在 Python 中有一个标准的 logging 模块,我们可以使用它来进行标注的日志记录,利用它我们可以更方便地进行日志记录,同时还可以做更方便的级别区分以及一些额外日志信息的记录...强大的 logging logging 所提供的模块级别的日志记录函数是对 logging 日志系统相关类的封装 logging 模块提供了两种记录日志的方式: 使用 logging 提供的模块级别的函数...文件配置 在开发过程中,将配置在代码里面写死并不是一个好的习惯,更好的做法是将配置写在配置文件里面,我们可以将配置写入到配置文件,然后运行时读取配置文件里面的配置,这样是更方便管理和维护的,下面我们以一个实例来说明一下

    60230

    ESP8266 wifi钓鱼

    0×01 攻击构思          第一步,利用tpyboard v202将wifi干扰;         第二步,将v202的ssid和信道改为与受干扰wifi相同的SSID及信道;        ...第五步,当密码写入后,v202后尝试验证密码的正确性,如果正确将停止干扰,并将密码通过tpyboard存入TF卡,否则继续干扰。 ...,v102接收到正确的密码后,进行TF卡的存储,同时也记录下攻击日志。        ...9、查看一下TF卡中的log.txt文件,是否记录了刚才破解的密码。 ?...0×06 扩展         本实验做的有点粗,可以再做精细一点,比如V202完全由V102来供电(将V102的5V、GND与V202的VIN、GND连接),这样就是一整套设备,只需要加个电源供电就可以长期放在一边

    3.9K30

    邪恶改装2:用单片机实现一次简单的wifi密码欺骗

    0×01 攻击构思         第一步,利用tpyboard v202将wifi干扰;         第二步,将v202的ssid和信道改为与受干扰wifi相同的SSID及信道;        ...第五步,当密码写入后,v202后尝试验证密码的正确性,如果正确将停止干扰,并将密码通过tpyboard存入TF卡,否则继续干扰。...,v102接收到正确的密码后,进行TF卡的存储,同时也记录下攻击日志。        ...9、查看一下TF卡中的log.txt文件,是否记录了刚才破解的密码。 ?...0×06 扩展         本实验做的有点粗,可以再做精细一点,比如V202完全由V102来供电(将V102的5V、GND与V202的VIN、GND连接),这样就是一整套设备,只需要加个电源供电就可以长期放在一边

    1.4K30

    还在用print()查找错误?日志消息这顿排骨它不香嘛?

    在Python中记录程序运行的日志文件时,我们需要调用logging模块,通过该模块,我们很容易的创建自定义的消息记录,这些日志消息将描述程序执行时,何时达到日志函数的调用,并列出我们想要指定的任何变量当时的值...而是我们在将程序调试完成的时候,需要花费很多时间从代码中清除每条日志消息中的print()函数,这样的话,我们就很有可能一不小将我们期望输出的内容进行删除。...例如:将basicConfig()函数的level的关键字参数改为logging.ERROR,这样将只显示ERROR级别和CRITICAL的日志消息,对于ERROR以下级别的日志消息并不会显示在屏幕上。...5 将日志记录到文件 我们除了将日志消息显示在屏幕上以外,还可以将它们写入到文本文件之中,这样做目的是为了我们在进行程序调试的时候,不至于很多日志文件显示在屏幕,从而影响我们对变量的读取的读取,在rogging.basicConfig...这样程序输出的结果中就只会有我们使用print()想要输出的内容,对于日志消息,则会保存在相应的日志文件中去。 ?

    58110

    python 内置模块续(二)

    加密:将明文数据通过一系列的算法变成密文数据,这样做提升了数据的安全性 加密算法:md系列、sha系列、base系列、hamc系列 常用的算法类型及方法: hashlib.md5...'utf8')) # 加盐处理 md5.update('加点干扰才更加安全'.encode('utf8')) # 加密处理 res = md5.hexdigest() print(res) # 为加盐的结果...这个模块定义了为应用程序和库实现灵活时间日志记录的函数和类!...filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。...,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名 %(lineno)d 调用日志输出函数的语句所在的代码行

    57230

    闭包和装饰器

    等到3个函数都返回时,它们所引用的变量i已经变成了3 最简单的方法就是改为def fun_b(_i=i),这样就每次都把i值传入了 装饰器 装饰器的作用就是为已经存在的对象添加额外的功能 def test1...再比如,下面我们用装饰器logger来给所有关于work的函数增加记录日志的功能 from functools import wraps import time def logger(func):...# 定义一个记录日志的装饰器 @wraps(func) def write_logging(): print('[info]--时间是:%s'%time.strftime...上面的装饰器,在work函数中不能传参数,不能知道是谁在哪个时间工作,我们如果想给func函数增加参数,就要在write_logging处增加参数: def logger(func): # 定义一个记录日志的装饰器...,这样就可以传入想写的参数 def work_2(name): print('%s 在工作'%name) work_2('张三') 我们在写代码时如果才想起来调用库函数,可以先写需要的函数,alt

    17510

    限定某个目录禁止解析php,限制user_agent,php相关配置

    现在我们把刚刚列举的那些危险的函数都配置进去,把它们都给禁掉: ? 在大多数的公司会在生产环境中把phpinfo给禁掉,因为怕有时候不小心将phpinfo页面上传到了线上去了。...display_errors属性是用于定义是否显示日志信息在在浏览器上: ? 直接显示在浏览器上会暴露目录,所以要把这个值改为Off: ? 这时候再访问就不会显示日志信息了: ?...error_reporting属性是用于定义error_log的级别,如果定义的级别比较高的话,就只会记录比较严重的错误,警告之类的就不会记录。...查看日志文件可以知道,访问的文件并没有在允许的目录下: ? 现在把open_basedir改为111.com,再测试一下,这时就正常了: ?...但是配置php.ini的open_basedir并没有意义,因为这样的配置只能是配置全部站点的,因为所有的站点都放在一个目录下,不能针对单个站点去做,所以和没有配置没差别,例如只能这样配置,但是没有意义

    1.3K10
    领券