我正在开发定制的日志程序,根据需要,我需要获取被调用函数中的进程、线程和对象名(在下面的例子中,它的obj需要获取get_configured_logger函数中的对象名)以及obj所属的类名。如下面代码中的注释所示,请给出一些实现此目标的想法。
import logging, logging.handlers
from logging import StreamHandler, Formatter
class A:
def get_configured_logger(self,name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
FORMAT = "%(process)s %(thread)s:-(asctime)s - %(name)s - %(levelname)s - %(message)-%(module)"
#print 'process:',process
#print 'thread:',thread
#print 'levelname:',levelname
#print 'Module:',(name portion of filename).
#print 'obj:,'name of the object(Eg:obj),current function( Eg: get_configured_logger) called by'
#print 'class name:(obj is instance of class)'
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
return logger
if __name__=="__main__":
obj=A()
logger = obj.get_configured_logger("DEMO")
logger.debug("TEST")
谢谢
赫马
线程名称
documentation描述了一个简单的接口来访问当前的} 属性来获得线程名。
Thread
,然后可以使用它的^{然后您可以使用:
要知道这不是唯一的。
进程名
获取进程名并不容易,因为这取决于您使用的操作系统。但是,您可以获取进程ID(
pid
)执行以下操作:这是除非您使用
multiprocessing
模块并启动子流程,在这种情况下,您可以使用multiprocessing
模块,该模块提供的接口与Threading
模块的接口非常相似。要将当前进程/线程名添加到日志消息中,可以在格式字符串中指定:
要将它们作为字符串:
相关问题 更多 >
编程相关推荐