我编写了一个脚本,该脚本从cloudwatch收集事件日志,将其写入两个文件,然后通过邮件发送每个文件的内容。因为我想收到两封电子邮件,所以每个记录器都有不同类型的日志,因此我创建了两个记录器:
logLevel = logging.INFO
doWait = object()
if os.path.exists ('.debug'):
logLevel = logging.DEBUG
logger1 = logging.getLogger()
logger2 = logging.getLogger()
logger1.setLevel(logLevel)
logger2.setLevel(logLevel)
formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s')
fileHandler1 = os.path.join('/tmp/', 'error-admin-' + datetime.datetime.utcnow().strftime('%Y-%m-%d') + '.log')
fileHandler2 = os.path.join('/tmp/', 'error-user-' + datetime.datetime.utcnow().strftime('%Y-%m-%d') + '.log')
fh1 = logging.handlers.RotatingFileHandler(fileHandler)
fh2 = logging.handlers.RotatingFileHandler(fileHandler2)
fh1.setLevel(logLevel)
fh2.setLevel(logLevel)
fh1.setFormatter(formatter)
fh2.setFormatter(formatter)
logger1.addHandler(fh1)
logger2.addHandler(fh2)
在主要方面,我这样调用函数:
function1(arg1,arg2,logger1)
function2(arg1,arg2,logger2)
现在,我的问题是,当我执行脚本时,即使在分开记录器的情况下,两个文件处理程序中的内容也相同。为什么会这样呢?
发生这种情况的原因是,logger1
并且logger2
两者都指向下面的根 Logger
。
从文档:Multiple calls to getLogger() with the same name will always return a reference to the same Logger object.
您需要两个单独的Logger
对象:
logger1 = logging.getLogger('error-admin')
logger2 = logging.getLogger('error-user')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句