python logging默认情况下打印_Python logging模块重复打印?

Python logging日志模块在使用时会进行重复打印,是否代码不对?还是?

贴上代码:

logme.py:

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

__author__ = 'neilsun'

import logging

import time

import sys

import os

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from monitorstack import settings

logger = logging.getLogger('monitorstack')

time_obj = time.gmtime()

log_time = "{year}_{month}_{day}".format(year=time_obj.tm_year,month=time_obj.tm_mon,day=time_obj.tm_mday)

def debug(msg):

logger.setLevel(logging.DEBUG)

debuglogger = logging.StreamHandler()

debuglogger.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

debuglogger.setFormatter(formatter)

logger.addHandler(debuglogger)

if settings.DEBUG == True:

logger.debug(msg)

else:

pass

def warning(msg):

logger.setLevel(logging.WARNING)

warnlogger = logging.FileHandler("logs/monitorstack_%s.log" % log_time)

warnlogger.setLevel(logging.WARNING)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

warnlogger.setFormatter(formatter)

logger.addHandler(warnlogger)

logger.warning(msg)

def error(msg):

logger.setLevel(logging.ERROR)

errorlogger = logging.FileHandler("logs/monitorstack_error_%s.log" % log_time)

errorlogger.setLevel(logging.ERROR)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

errorlogger.setFormatter(formatter)

logger.addHandler(errorlogger)

logger.error(msg)

test_log.py:

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

__author__ = 'neilsun'

import logme,time

logme.debug('a')

logme.debug('b')

logme.debug('c')

结果:

2016-09-21 14:59:20,983 - DEBUG - a

2016-09-21 14:59:20,983 - DEBUG - b

2016-09-21 14:59:20,983 - DEBUG - b

2016-09-21 14:59:20,983 - DEBUG - c

2016-09-21 14:59:20,983 - DEBUG - c

2016-09-21 14:59:20,983 - DEBUG - c

求解

logger的handler只需要Add一次。

你在Logme.py中每次调用debug都会设置添加一个log handler,每个handler都会打印一次log,所有就会出现调用几次debug,就会打印几条相同的log。

你包装的logme模块的功能, logging模块都已经有了, 建议看看Logging HOWTO会让你事半功倍的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值