您当前的位置: 首页 >  Python

FPGA硅农

暂无认证

  • 1浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python log日志模块的使用

FPGA硅农 发布时间:2021-05-24 10:19:33 ,浏览量:1

l o g 1 , l o g 2 , l o g 3 log1,log2,log3 log1,log2,log3分别对应三种实现方式,其中 l o g 1 log1 log1的实现比较简单,但是使用不便,尤其是需要在多个地方调用且写入同一文件的时候, l o g 2 , l o g 3 log2,log3 log2,log3则使用对象实现,方便在多个地方调用,且演示了如何同时向控制台和文件输出,以下是简单的示例代码:

import logging
import os.path
import time

def log1():
    logging.basicConfig(level=logging.INFO,filename='log.txt',filemode='w',format="%(levelname)s:%(asctime)s:%(message)s")
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")

def log2():
    log_obj = logging.getLogger()  # 创建对象
    log_obj.setLevel("INFO")      # 设置日志等级

    fileHandle = logging.FileHandler('log2.txt',mode='w')   # 创建日志文件流对象
    streamHandle = logging.StreamHandler()                  # 创建控制台对象

    # 将创建的两个对象添加到日志对象中
    log_obj.addHandler(fileHandle)
    log_obj.addHandler(streamHandle)
    #打印信息
    log_obj.info('普通信息')
    log_obj.error('出现错误')
    log_obj.warning('出现警告')

def log3():
    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)

    handler = logging.FileHandler('log3.txt', mode='w')
    handler.setLevel(logging.INFO)

    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    handler.setFormatter(formatter)

    console = logging.StreamHandler()
    console.setLevel(logging.WARNING)

    logger.addHandler(handler)
    logger.addHandler(console)

    logger.debug('This is a debug message.')
    logger.info('This is an info message.')
    logger.warning('This is a warning message.')
    logger.error('This is an error message.')
    logger.critical('This is a critical message.')

def log():
    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)

    handler = logging.FileHandler('log3.txt', mode='w')
    handler.setLevel(logging.INFO)

    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    handler.setFormatter(formatter)

    console = logging.StreamHandler()
    console.setLevel(logging.WARNING)

    logger.addHandler(handler)
    logger.addHandler(console)
    return logger

def log4(loger):
    loger.warning("This is log4")
def f():
    loger=log()
    loger.info("infomation1")
    loger.info("infomation2")
    loger.warning("warning1")
    log4(loger)

if __name__=='__main__':
    f()

我们可以通过设置等级来控制信息是否输出,这一点在调试时尤为有用,若使用 p r i n t print print调试,则在调试完成后还需要将所有 p r i n t print print注释掉,而采用 l o g log log模块,只需修改等级即可。

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.0373s