Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静默rekall python库日志记录输出_Python_Logging - Fatal编程技术网

静默rekall python库日志记录输出

静默rekall python库日志记录输出,python,logging,Python,Logging,我创建了一个脚本,该脚本正在导入内存取证框架,以从内存转储中提取各种内核偏移量 我面临着记录输出的问题,我觉得我不能完全控制它 首先,在导入库时,我必须使用一个小技巧删除Rekall的日志记录.basicConfig(),以便配置自己的日志记录级别: # remove Rekall basicConfig() for handler in logging.root.handlers[:]: logging.root.removeHandler(handler)

我创建了一个脚本,该脚本正在导入内存取证框架,以从内存转储中提取各种内核偏移量

我面临着记录输出的问题,我觉得我不能完全控制它

首先,在导入库时,我必须使用一个小技巧删除Rekall的
日志记录.basicConfig()
,以便配置自己的日志记录级别:

    # remove Rekall basicConfig()
    for handler in logging.root.handlers[:]:
        logging.root.removeHandler(handler)
    # configure my logging level
    logging.basicConfig(level=log_level)
现在,我仍然收到恼人的输出消息:

./rekall_offset_finder.py -u qemu:///session winxp
INFO:root:Dumping winxp physical memory to /tmp/tmpsuam8btj/tmpa30uvrc5
WARNING:root:Unable to determine file size, assuming file is volatile.
INFO:root:Autodetected physical address space Elf64CoreDump
INFO:root:Loaded profile pe from Local Cache - (in 0.0884544849395752 sec)
INFO:root:Loaded profile nt/GUID/7075F995A48A414F8F7BE9A1E0240F821 from Local Cache - (in 0.21683239936828613 sec)
INFO:root:Loaded profile nt/eprocess_index from Local Cache - (in 0.19333624839782715 sec)
INFO:root:Detected ntkrpamp.pdb with GUID 7075F995A48A414F8F7BE9A1E0240F821
INFO:root:Detected kernel base at 0x804D7000
Trying to fetch http://msdl.microsoft.com/download/symbols/ntkrpamp.pdb/7075F995A48A414F8F7BE9A1E0240F821/ntkrpamp.pdb
INFO:root:Loaded profile mspdb from Local Cache - (in 0.08299803733825684 sec)
其中有些信息不是我的

我知道我可以通过调用
logging.getLogger(name).setLevel(logging.WARNING)

->如何确定要静默的记录器的名称

->有办法列出所有可用的记录器吗?


谢谢

这个解决方案是@hoefling给我的

我将我的根记录器作为Rekall的会话记录器传递

通过删除它,Rekall必须创建自己的记录器,并且它有一个新的名称空间:
Rekall.1

WARNING:rekall.1:Unable to determine file size, assuming file is volatile.
为了让它安静下来,我使用了:

logging.getLogger('rekall.1').setLevel(logging.CRITICAL)
要确定可用的记录器,您可以使用:

logging.Logger.manager.loggerDict.keys()

谢谢

您正在将根记录器实例传递给会话,因此在那里发出的所有记录都将以与您相同的方式进行处理。为什么不使用自己的配置传递一个单独的记录器实例(并且可能不传播到根记录器)?不幸的是,脚本需要太多的依赖项才能在本地重现错误,因此这只是阅读其代码的一个通知。