首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python-bunyan中添加函数名、行号、路径名等附加参数

在python-bunyan中添加函数名、行号、路径名等附加参数,可以通过自定义一个Filter来实现。Filter是python-bunyan中的一个概念,用于对日志记录进行处理和修改。

首先,需要导入python-bunyan库和相关的模块:

代码语言:txt
复制
import logging
import bunyan
import inspect

然后,定义一个自定义的Filter类,继承自bunyan.Filter类,并重写filter_record方法:

代码语言:txt
复制
class CustomFilter(bunyan.Filter):
    def filter_record(self, record):
        # 获取调用该日志记录的函数名、行号和路径名
        frame = inspect.currentframe().f_back
        record["function"] = frame.f_code.co_name
        record["lineno"] = frame.f_lineno
        record["pathname"] = frame.f_code.co_filename
        return True

接下来,创建一个Logger对象,并添加自定义的Filter:

代码语言:txt
复制
logger = logging.getLogger("example")
logger.setLevel(logging.DEBUG)

handler = bunyan.BunyanHandler()
handler.addFilter(CustomFilter())

logger.addHandler(handler)

现在,当使用logger记录日志时,日志记录中将包含函数名、行号和路径名等附加参数:

代码语言:txt
复制
logger.debug("This is a debug message")

完整的代码示例:

代码语言:txt
复制
import logging
import bunyan
import inspect

class CustomFilter(bunyan.Filter):
    def filter_record(self, record):
        # 获取调用该日志记录的函数名、行号和路径名
        frame = inspect.currentframe().f_back
        record["function"] = frame.f_code.co_name
        record["lineno"] = frame.f_lineno
        record["pathname"] = frame.f_code.co_filename
        return True

logger = logging.getLogger("example")
logger.setLevel(logging.DEBUG)

handler = bunyan.BunyanHandler()
handler.addFilter(CustomFilter())

logger.addHandler(handler)

logger.debug("This is a debug message")

这样,你就可以在python-bunyan中添加函数名、行号、路径名等附加参数了。请注意,以上代码示例中的logger和handler对象是示例对象,实际使用时需要根据具体情况进行调整和配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从源头解决内存泄漏问题:全面解析内存泄漏检测与修复技术

在第二个命令,addr2line从标准输入读取十六进制地址,并在标准输出打印每个地址的文件名和行号。在这种模式下,addr2line可以在管道中用于转换动态选择的地址。...extra_info返回附加信息。...ENOMEM内存不足,无法向环境添加新变量。...0x4006b80x00000000004006b8mainmemleak.c:133.2、方式二:采用宏定义Linux中有两个宏__FILE__、__func__和__LINE__,分别指示当前的文件名、函数名行号...解决方案就是添加标志。gcc内置功能:void * __builtin_return_address(无符号整数级别)此函数返回当前函数或其调用方之一的返回地址。参数是向上扫描调用堆栈的帧数。

24120

使用动态输出打印内核的DEBUG信息

要开启动态输出,内核需要添加CONFIG_DYNAMIC_DEBUG。...control文件节点记录了系统中所有使用动态输出技术的文件名路径,输出语句所在的行号、模块名和将要输出的语句。...这变化操作如下所示: - //移除给定的标记 + //加入给定的标记 = //设置标记到给定的标记上 f //包含已打印消息的函数名 l //包含已在打印消息的行号 m //包含已打印消息的模块名...p //产生一个printk()消息到显示系统启动日志 t //包含了不在中断上下文中产生的消息里的线程ID 传递启动参数给内核 在调试系统启动是时,像USB核心初始化,这些代码在系统进入shell...这时可以在内核启动时传递参数给内核,在系统初始化时就打开它们。 例如,在内核命令行添加 usbnet.dyndbg=+plft ,就可以在启动时打开 usbnet的动态输出。

1.9K40
  • go-runtimepprof

    profile 将当前栈添加到分析 获取当前执行栈的数量 从该分析移除与值value相关联的执行栈 将profile写入到文件 通过名称查找profile 开始之前先下载性能文件分析工具,下载地址...debug 参数用于开启附加的输出。如果debug=0,只会打印pprof所需要的十六进制地址;如果debug=1,会将地址翻译为函数名行号添加注释,以便让程序员无需工具阅读分析报告。...("main") // 1.新建 profile.Add("analyse",1) //2 error := profile.WriteTo(file,1) // debug=1,会将地址翻译为函数名行号添加注释...debug 参数用于开启附加的输出。如果debug=0,只会打印pprof所需要的十六进制地址;如果debug=1,会将地址翻译为函数名行号添加注释,以便让程序员无需工具阅读分析报告。...("main") // 1.新建 profile.Add("analyse",1) //2 error := profile.WriteTo(file,1) // debug=1,会将地址翻译为函数名行号添加注释

    1.4K20

    Python3 日志模块

    message CRITICAL:root:this is critical message ---- 日志配置 logging.basicConfig()函数来配置日志等级、日志显示格式、日志显示的消息...参数 含义 %(name)s Logger的名字 %(levelno)s 打印日志级别的数值 %(levelname)s 打印日志级别名称 %(pathname)s 打印调用日志输出函数的模块的完整路径名...,可能没有 %(filename)s 打印调用日志输出函数的模块的文件名 %(funcName)s 打印调用日志输出函数的函数名 %(module)s 打印调用日志输出函数的模块名 %(lineno)d...打印调用日志输出函数的语句所在的代码行号 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d 打印输出日志信息时的,自Logger创建以...重命名的过程与RotatingFileHandler类似,不过新的文件不是附加数字,而是当前时间。

    77420

    linux常见面试题

    然后,人们可以添加功能,甚至可以调试和更正源代码的错误。它们甚至可以让它运行得更好,然后再次自由地重新分配这些增强的源代码。这最终使社区的每个人受益。 8)Linux的基本组件是什么?...使用图形元素不仅需要记住和键入命令,还可以更轻松地与系统交互,以及通过图像,图标和颜色添加更多吸引力。 15)如何在发出命令时打开命令提示符?...IDE / EIDE硬盘驱动器称为/ dev / hda,/ dev / hdb,/ dev / hdc。 22)如何在Linux下更改权限?...在命令,color.ui变量设置变量的默认值,例如color.diff和color.grep。 55)如何在Linux中将一个文件附加到另一个文件?...60)解释如何在Ubuntu启用root日志记录?

    2.5K10

    ArcGIS系列——Arcpy函数(1)

    可以在评论区或后台留言~ Arcpy函数(1) Arcpy函数可以实现一些功能,:确定数据是否存在、查询数据集属性、处理数据集列表一系列功能。...函数类型大致可以分为如下几个部分: 1 PythonArcpy函数的调用方式 上一期的内容里我们已经介绍了如何在pycharm里配置Arcpy,现在我们来介绍一下Arcpy如何调用函数: 如上图所示...如果存在该文件,则在结果输出TRUE,否则输出为FALSE。 可见,若想在python调用Arcpy函数,则要按照如下方式进行操作: arcpy....() 其中,对应上图图片的红色区域为“函数名称”,对应上图紫色区域的是“参数”。函数的参数分为必选参数和可选参数。...如下所示: 输出结果如下所示: 2.CreatScratchName CreateScratchName是一个为指定的数据类型创建唯一的临时路径名称的函数。

    1.2K40

    XYG3型泛在ORCA的使用

    XYG3型泛在ORCA的使用 本篇文章我们讨论XYG3型泛在ORCA的使用方法。关于XYG3型泛的介绍可见上期链接。...开头的关键词,直接通过%compound部分指定XYG3计算,基组设置都作为参数传给Compound脚本xdh.cmp。...由于在双杂化泛计算,可以指定的附加关键词成百上千,所以我们暂未支持较多的脚本参数。有DIY需求的进阶用户可以自行修改上述三个步骤的关键词。...例如 在步骤scf启用UKS对称破缺初猜、检查波函数稳定性、添加帮助收敛的关键词。注意不需要在nscf添加这些关键词。 在步骤scf和nscf修改DFT格点。...在步骤pt2修改MP2相关的选项,删去nofrozencore,添加tightPNO。 该脚本可能还有不少bug(多半是ORCA的bug),欢迎在github的issue区发起讨论。

    1.3K10

    为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】

    :2 class java.lang.String----arg0 class java.lang.Integer----arg1 从结果可以看到我们并不能获取到真实方法参数名(获取到的是无意义的arg0...、arg1),这个结果符合我们的理论知识以及预期。...控制台输出: fsx---18 从结果可见:看似办不到的case,Spring MVC竟然给做到了(获取到了方法参数名,进而完成封装),是不是有点不可思议???...那么本文就分析为何Spring MVC为何可以正确的解析到方法参数名称这个问题,从字节码角度深入分析其缘由~ ---- 为了便于理解,先简单说说字节码的两个概念:LocalVariableTable和...就是用来获取参数名的,底层用的是asm解析,但是接口方法的参数名无法得到,即只能是非接口类的方法参数名可以。

    1.3K32

    深入探索GDB:Linux下强大的调试神器

    动态控制:在GDB环境,开发者可以实时控制程序的执行流程,暂停、恢复、单步执行、跳转到指定位置,犹如拥有了一台时光机,能够任意穿梭于程序的执行时间线上。...在GDB环境,以下是一些常用的基本命令: break :在指定的源代码位置(数名行号、条件表达式)设置断点。...run [args]:启动程序,可选参数args用于传递给程序的命令行参数。 continue 或 c:继续执行程序,直到遇到下一个断点或程序结束。...GDB提供了backtrace(简写为bt)命令,用于展示当前的调用栈信息: (gdb) bt 输出结果将按深度由浅至深列出各个栈帧,包括函数名、源文件名、行号参数,帮助开发者快速定位问题发生在哪个函数调用链路...gdbheap.py (gdb) attach (gdb) monitor heap 上述命令将附加到指定进程(),加载gdbheap.py插件,并显示堆内存分配情况。

    89610

    基础理论

    、函数的局部变脸、函数执行完后返回到哪里等等 每一个栈帧代表的就是一个未运行完的函数 3、实例教学 代码如下 创建过程如下: 1、创建一个 touch hello.c 2、添加可以正确执行的...这类信息虽然不是错误,不影响编译,但是很可能是程序 bug 的源头,也有助于你寻找代码的错误,规范代码格式。所以建议每次编译时都加上 -Wall 参数。...删除断点 删除断点通过命令包括: delete :删除指定断点 delete:删除所有断点 clear clear 函数名 clear 行号 clear 文件名:行号 clear 文件名:函数名...查看断点 info br 简写:i b 设置断点 设置断点可以通过b或者break设置断点,断点的设置可以通过函数名行号、文件名+函数名、文件名+行号以及偏移量、地址进行设置。...break 函数名 break 行号 break 文件名:函数名 break 文件名:行号 break +偏移量 break -偏移量 break *地址 希望大家有所收获!!!

    11910

    php面试题目100及最佳答案

    2,数据库添加索引 3,页面可生成静态 4,图片大文件单独放在一个服务器 5,能不查询数据库的尽量不去数据取数据,可以放在缓存。 3.表单 get与post提交方法的区别?...__FUNCTION__函数名称 __CLASS__类的名称 __METHOD__类的方法名 7.数据库的事务是什么?...可以实现接口,同时实现接口中的所有方法 多态:覆盖和重载 子类可以覆盖父类的方法;一个类可以同时拥有同一个函数名的方法,但是方法的参数不同,实现的结果也不同。...> 50 请举例说明在你的开发过程中用什么方法来加快页面的加载速度 要用到服务器资源时才打开 及时关闭服务器资源, 数据库添加索引, 页面可生成静态,图片大文件单独服务器...、pdo,可利用适配器模式统一接口 观察者模式: 一个对象通过添加一个方法使本身变得可观察。

    8.3K30

    Source Insight 4.0初用(上)

    修改窗口颜色属性:菜单栏-选项-参数-颜色标签,可以修改背景颜色、默认字体颜色、修改标记颜色背景颜色改为护眼模式:R199 G237 B204。 ?...Alt+Y打开文档类型选项窗口,修改字体显示大小、是否显示行号、解析语言选择、工程文件过滤、扩展tab键、是否显示符号窗口。 ?...菜单栏-选项-参数-语言标签,选中解析文档的语言,点击关键字按钮,打开语言关键字窗口,在样式这一栏选中一种风格,然后添加关键字即可。这样文档这个关键字就以那种风格显示了。...扩充3:如何查看和修改符号(数名、变量)的风格,右击该符号,选择风格,打开窗口就可以看到该符号的风格是什么,然后进行修改。...(3)、快速更名ctrl+',选中某个函数名,然后按ctrl+',弹出快速更名窗口,然后根据相应的选项,可以快速更换函数名。(包括函数的声明处,定义处,引用处)。

    1.3K41

    【linux】gdb

    release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 release版本不可被调试,debug版本可以,原因是,debug版本下编译器形成可执行程序的时候会给可执行程序添加调试信息...通过这个命令,你可以查看包含在 ELF 文件的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表 #include int AddToTarget(int a...list/l: l文件名:行号/函数名,I行号/函数名 list/l 函数名:列出某个函数的源代码。 r或run:运行程序。...break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break ( i b ):查看断点信息。...:跳至X行 breaktrace(或bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb

    9810

    shell脚本扩展「建议收藏」

    若再加上-v,–invert-match,参数显示不符合的总行数 5、-i,–ignore-case 忽略大小写差别 6、-n,–line-number 在匹配的行前面打印行号 7、-v,–revert-match...第二行以/company/开始,这是附加操作起始位置。a\通知sed这是一个附加操作,首先插入二个新行。 第三、四行是附加操作要加入到拷贝的实际文本。...① 表达式可以使用变量(字段变量1,2)和/regexp/ ② 布尔表达式的操作符: 关系操作符: = == !...例3:如果只是显示/etc/passwd文件的UID大于500的用户名和登录shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加”blue,/bin/...2、定义函数的格式为: 函数名(){ 命令1 … } 如果愿意,可在函数名前加上关键字function,这取决于使用者。

    5.8K20

    SourceInsight4.0的使用

    1、文档窗口 (1)、修改窗口颜色属性:菜单栏-选项-参数-颜色标签,可以修改背景颜色、默认字体颜色、修改标记颜色背景颜色改为护眼模式:R199 G237 B204。 ?...菜单栏-选项-参数-语言标签,选中解析文档的语言,点击关键字按钮,打开语言关键字窗口,在样式这一栏选中一种风格,然后添加关键字即可。这样文档这个关键字就以那种风格显示了。...扩充3:如何查看和修改符号(数名、变量)的风格,右击该符号,选择风格,打开窗口就可以看到该符号的风格是什么,然后进行修改。...(3)、快速更名ctrl+',选中某个函数名,然后按ctrl+',弹出快速更名窗口,然后根据相应的选项,可以快速更换函数名。(包括函数的声明处,定义处,引用处)。...(1)、右击窗口选项,修改字体或背景颜色、不显示文件大小、目录、日期。 4、关联窗口 这个窗口用来显示文档的符号在哪些地方进行了引用。哪些地方调用了函数,或该函数调用了哪些函数

    1.7K30
    领券