zoukankan      html  css  js  c++  java
  • python log

    import logging
    import os.path
    import time


    class Log(object):
    my_log = logging.getLogger()

    def __init__(self):
    # 创建自己的日志收集器
    # self.my_log = logging.getLogger("my_log")
    # 设置收集的日志等级,设置为DEBUG等级
    self.my_log.setLevel("DEBUG")
    # 日志输出渠道
    # 创建一个日志输出渠道(输出到控制台),并且设置输出的日志等级为INFO以上
    self.l_s = logging.StreamHandler()
    self.l_s.setLevel("DEBUG")
    # 创构建一个日志输出渠道(输出到文件)

    current_time = time.strftime('%Y%m%d', time.localtime(time.time())) # 返回当前时间
    new_name = os.getcwd() + '/logs/' # 在该路径下新建下级目录
    is_exists = os.path.exists(new_name) # 判断该目录是否存在
    if not is_exists:
    os.makedirs(new_name)
    print(new_name + "目录创建成功")

    else:
    # 如果目录存在则不创建,并提示目录已存在
    print(new_name + "目录已存在")

    new_name = new_name + current_time + "_"

    l_f = logging.FileHandler(new_name + "error.log", encoding='utf8')
    l_f.setLevel("ERROR") # 设置输出的日志等级为ERROR以上
    l_d = logging.FileHandler(new_name + "debug.log", encoding='utf-8')
    l_d.setLevel("DEBUG") # 设置输出的日志等级为DEBUG以上
    cc = logging.FileHandler(new_name + "info.log", encoding='utf-8')
    cc.setLevel("INFO") # 设置输出的日志等级为INFO以上
    # 将日志输出渠道添加到日志收集器中
    self.my_log.addHandler(self.l_s)
    self.my_log.addHandler(l_f)
    self.my_log.addHandler(l_d)
    self.my_log.addHandler(cc)
    # 设置日志输出的格式
    # 可以通过logging.Formatter指定日志的输出格式,这个参数可以输出很多有用的信息,如下:
    # % (name)s: 收集器名称
    # % (levelno)s: 打印日志级别的数值
    # % (levelname)s: 打印日志级别名称
    # % (pathname)s: 打印当前执行程序的路径,其实就是sys.argv()
    # % (filename)s: 打印当前执行程序名
    # % (funcName)s: 打印日志的当前函数
    # % (lineno)d: 打印日志的当前行号
    # % (asctime)s: 打印日志的时间
    # % (thread) d: 打印线程ID
    # % (threadName)s: 打印线程名称
    # % (process) d: 打印进程ID
    # % (message) s: 打印日志信息
    ft = "%(asctime)s - [%(filename)s -->line:%(lineno)d] - %(levelname)s: %(message)s" # 工作中常用的日志格式
    ft = logging.Formatter(ft)
    # 设置控制台和日志文件输出日志的格式
    self.l_s.setFormatter(ft)
    l_f.setFormatter(ft)
    l_d.setFormatter(ft)
    cc.setFormatter(ft)

    @classmethod
    def info(cls, msg):
    cls.my_log.info(msg)
    return

    @classmethod
    def error(cls, msg):
    cls.my_log.error(msg)
    return

    @classmethod
    def debug(cls, msg):
    cls.my_log.debug(msg)


    if __name__ == '__main__':
    my_log = Log().my_log
    ss = "一条小日志"
    my_log.info(ss)
    my_log.debug(ss)
    my_log.error(ss)
  • 相关阅读:
    【模板】可持久化线段树
    【模板】可持久化权值线段树(主席树)
    BZOJ 2456 Mode
    【模板】可持久化Treap
    BZOJ 1452 Count 【模板】二维树状数组
    高级线程之线程池
    STL优先队列重载
    单链表及简单应用
    2017 计蒜之道 初赛 第一场 A 阿里的新游戏
    2017 计蒜之道 初赛 第一场 B阿里天池的新任务(简单)
  • 原文地址:https://www.cnblogs.com/sam-cheng/p/14228576.html
Copyright © 2011-2022 走看看