python 线程日志

python日志级别

import logging
'''
日志级别:
critical > error > warning > info > debug,notset
级别越高打印的日志越少,反之亦然,即
debug    : 打印全部的日志(notset等同于debug)
info     : 打印info,warning,error,critical级别的日志
warning  : 打印warning,error,critical级别的日志
error    : 打印error,critical级别的日志
critical : 打印critical级别
'''
示例1
import logging  
import logging.handlers  

LOG_FILE = 'tst.log'  
handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes = 1024*1024, backupCount = 5) # 实例化handler,1M*(5+1)   
fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s'  
formatter = logging.Formatter(fmt)   # 实例化formatter  
handler.setFormatter(formatter)      # 为handler添加formatter  
logger = logging.getLogger('tst')    # 获取名为tst的logger  
logger.addHandler(handler)           # 为logger添加handler  
logger.setLevel(logging.DEBUG)  
logger.info('first info message')  
logger.debug('first debug message')  
当多个线程同时去写一个日志文件时会出错或导致日志混乱
可采用threading模块,加锁的方式实现多线程日志保护,实现线程安全
示例2
import threading
import logging
import logging.handlers
__lock = threading.RLock()
def info(self, message):
if ThreadLog.__lock.acquire():
try:
msg = str(message)
msg = msg.decode('utf8').encode('gbk')
self.logger.info(msg)
if self.stdout:
print self.__format(msg)
except:
ThreadLog.process_my_exception()

ThreadLog.__lock.release()
 

转载于:https://www.cnblogs.com/he-py/p/7232760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值