当前位置: 移动技术网 > IT编程>脚本编程>Python > Python日志处理模块loggin

Python日志处理模块loggin

2020年04月27日  | 移动技术网IT编程  | 我要评论

不能不想你简谱,暄组词,meixingzhongwen

    logging模块是python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。其主要优点如下:

  • 1.可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
  • 2.尤其是代码运行在服务器上,当出现问题时可以通过查看日志进行分析。

    logging模块基本使用:

  • 设置logger名称

logger = logging.getlogger(log_name)

  • 设置log级别

logger.setlevel(logging.info)

  • 创建一个handler,用于写入日志文件

fh = logging.filehandler(log_file)

  • 设置日志级别,默认为logging.warning

fh.setlevel(loglevel[log_level])

  • 定义handler的输出格式

formatter = logging.formatter('%(asctime)s %(name)s [line:%(lineno)d] %(levelname)s %(message)s')

fh.setformatter(formatter)

  • 添加handler

logger.addhandler(fh)

  • format

%(levelno)s: 打印日志级别的数值

%(levelname)s: 打印日志级别名称

%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]

%(filename)s: 打印当前执行程序名

%(funcname)s: 打印日志的当前函数

%(lineno)d: 打印日志的当前行号

%(asctime)s: 打印日志的时间

%(thread)d: 打印线程id

%(threadname)s: 打印线程名称

%(process)d: 打印进程id

%(message)s: 打印日志信息

    示例代码如下:

import logging
import datetime
import os

# 定义日志级别字典
logleveldic={
    "info":logging.info,
    "debug":logging.debug,
    "warning":logging.warning,
    "error":logging.error
}

# 日志保存路径
logsavepath=os.path.join(os.getcwd(),"logs")
if not os.path.exists(logsavepath):
    os.makedirs(logsavepath,exist_ok=true)
# 当前时间
curtime=datetime.datetime.now().strftime("%y%m%d")
# 保存的日志的完整名称
logfile=os.path.join(logsavepath,curtime+".sadci.log")
# 日志级别
loglevel="error"

class logger:
    def __init__(self,logfile=logfile,loglevel=logleveldic["error"]):
        self.logfile=logfile
        self.loglevel=loglevel
        # 设置logger名称
        self.logger=logging.getlogger()
        # 设置参数级别
        self.logger.setlevel(self.loglevel)
        self.formatter=logging.formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
        # 判断handlers是否存在
        if not self.logger.handlers:
            #  写入控制台
            consolestream=logging.streamhandler()
            consolestream.setlevel(self.loglevel)
            consolestream.setformatter(self.formatter)
            #  写入文件
            filestream=logging.filehandler(self.logfile,mode="a")
            filestream.setlevel(self.loglevel)
            filestream.setformatter(self.formatter)
            self.logger.addhandler(consolestream)
            self.logger.addhandler(filestream)

def mylogger():
    return logger(logfile=logfile,loglevel=logleveldic[loglevel]).logger


if __name__ == '__main__':
    mylogger().error("test logg")

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网