python生成日志

2021-11-22 15:55:31 浏览数 (1)

python里面的日志简单生成。

代码语言:javascript复制
import logging
import os.path
import time

# 第一步,创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)  # Log等级总开关


# 第二步,创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))[:-4]

log_path = os.path.dirname(os.getcwd())   '/log/logs/'
log_name = log_path   rq   '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='a')
fh.setLevel(logging.DEBUG)  # 输出到file的log等级的开关



# 第三步,定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)



# 第四步,将logger添加到handler里面
logger.addHandler(fh)



# 日志
logger.debug('this is a logger debug message')
logger.info('this is a logger info message')
logger.warning('this is a logger warning message')
logger.error('this is a logger error message')
logger.critical('this is a logger critical message')

在外面调用:

scrapy中的日志是会继承我们自定义的log信息的。

scrapy源码中修改日志时间显示方式, from scrapy.extensions import corestats 重写 corestats中 的 spider_opened 和 spider_closed。

代码语言:javascript复制
def spider_opened(self, spider):
    self.start = time.time()
    start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.start))  # 转化格式
    self.stats.set_value('start_time,本次任务开始时间', start_time, spider=spider)



def spider_closed(self, spider, reason):
    self.end = time.time()
    finish_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.end))  # 转化格式
    self.stats.set_value('finish_time', finish_time, spider=spider)
    self.stats.set_value('finish_reason', reason, spider=spider)

    # 这是计算此时运行耗费多长时间,特意转化为 时:分:秒
    Total_time = self.end - self.start
    m, s = divmod(Total_time, 60)
    h, m = divmod(m, 60)
    self.stats.set_value('Total_time', "贴心小助手提示您:本次共耗时===>%d时:d分:d秒" % (h, m, s), spider=spider)
  • 更新
代码语言:javascript复制
import logging

class log():
    def __init__(self):
        logging.basicConfig(level=logging.DEBUG,        #控制台打印的日志级别
                         filename='../log/bot.log',
                         filemode='a',      #  追加模式,默认如果不写的话,就是追加模式
                         format='%(asctime)s - [line:%(lineno)d] - %(levelname)s: %(message)s')
                         # 时间。位置。等级。内容。

    def log_w(self,msg):
        logging.warning(msg)

0 人点赞