logging 日志模块

什么是日志
无处不在的
所有的程序必须记录日志

给用户看的
  购物软件
  视频软件
  银行卡

给内部人员看的
  给技术人员看的
    计算器
    500个表达式
    一些计算过程,或者是一些操作过程需要记录下来
    程序出现bug的时候,来帮助我们记录过程 排除错误
给非技术人员看的
   学校,公司的软件
      谁在什么时候做了什么事儿,删除操作

class Student:
    def __init__(self, name):
        self.name = name

    def select_course(self):
        print('Succussful Choose Class')
        with open('log', 'a', encoding='utf-8') as f:
            f.writer('%s : %s选课成功' % (time.strftime('%H-%M-%S'), self.name, 'python'))
            # 自己写的一条日志,太麻烦,每次都要打开文件,写入内容,所以有了logging模块
laura = Student('laura')
laura.select_course()  # 已经写入了log文件,谁在什么时间登陆

import logging  # 帮助我们以规范的形式和规范的格式或者写文件的一些信息

logging.basicConfig(level=logging.INFO)  # 都是在文件中写入信息,但是是分等级的,可以通过不同等级的信息来分析产品或用户记录
logging.debug('debug message')  # 计算或者工作的细节,正常的信息默认不显示,所以有了简单配置
logging.info('info message')   # 记录一些用户的增删改查的操作
logging.warning('input a string type')  # 警告操作
logging.error('error message')     # 错误操作
logging.critical('critical message')   # 批判的 直接导致程序出错退出的

>>>
INFO:root:info message  # 格式:等级:用户:操作(打印什么就是什么)
WARNING:root:input a string type
ERROR:root:error message
CRITICAL:root:critical message

简单配置
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='test.log',
                    filemode='w')
logging.warning('input a string type')
logging.error('EOF ERROR')  # 警告操作

>>>  # test.log文件中的内容
Mon, 10 Sep 2018 21:05:10 3,  logging i.py[line:57] WARNING input a string type
Mon, 10 Sep 2018 21:05:10 3,  logging i.py[line:58] ERROR EOF ERROR


等级可以配置,可以控制哪些消息显示哪些不显示,默认从warning开始显示,
可以控制输出的格式,如增加时间
报错的行数,如在哪一行出错
一次配置,格式不用改了,就改输入的内容以及要打印的等级。
当配置了filename时,会把下面两句都写进filename文件中。但是如果要把中文写进文件中,简单配置是不行的,不能知道编码,没有给定这个参数。对象配置可以



对象的配置
    帮助解决中文问题
    basicconfig要么往文件打,要么往屏幕输出,但是他不能既往文件打又往屏幕输出。
配置过程非常复杂,但十分灵活,可以自由配置
先创建一个log对象 : logger,绑定文件操作符,屏幕操作符
还要创建一个控制文件输出的文件操作符,绑定一个格式
还要创建一个控制屏幕输出的屏幕操作符,绑定一个格式
要创建一个格式



import logging
logger = logging.getLogger()  # 创建一个logging对象
logger.setLevel(logging.DEBUG)  # 设置显示等级,从debug开始输出了
# 创建一个控制文件输出的文件操作符
fh = logging.FileHandler('mylog.log')  # 输出的文件可以改
fh2 = logging.FileHandler('mylog2.log')  # 除了输入到mylog里,还会输出到mylog2中
sh = logging.StreamHandler()
fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  # 配置已经固定好了修改时可以按照需求修改就行了
fmt2 = logging.Formatter('%(asctime)s - %(name)s[line:%(lineno)d] - %(levelname)s - %(message)s')
fh.setFormatter(fmt)
sh.setFormatter(fmt2)
sh.setLevel(logging.WARNING)  # 回到warning,如果不想在屏幕输出debug的话
logger.addHandler(sh)
logger.addHandler(fh)
logger.addHandler(fh2)

logger.debug('debug message')
logger.info('info message')
logger.warning('input a string type')
logger.error('error message')
logging.critical('critical message')





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,可以使用logging模块来记录日志信息,方便程序员在开发和生产环境中进行调试和问题排查。logging模块提供了全局配置方法,可以通过配置来控制日志的格式、输出方式和级别等。 下面是一个简单的例子,展示如何使用logging模块进行全局配置: ``` import logging # 配置日志格式 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') # 创建一个StreamHandler,用于输出到控制台 console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) # 创建一个FileHandler,用于输出到文件 file_handler = logging.FileHandler('example.log') file_handler.setFormatter(formatter) # 创建一个Logger实例 logger = logging.getLogger('example') logger.setLevel(logging.DEBUG) # 将StreamHandler和FileHandler添加到Logger实例中 logger.addHandler(console_handler) logger.addHandler(file_handler) ``` 在上面的例子中,首先创建了一个Formatter对象,用于配置日志的格式。然后,创建了一个StreamHandler和FileHandler,分别用于将日志输出到控制台和文件中。接下来,创建了一个Logger实例,并设置了日志级别为DEBUG。最后,将StreamHandler和FileHandler添加到Logger实例中。 通过全局配置,可以方便地控制日志的输出方式和级别。在程序中,只需要使用logger对象来记录日志即可,例如: ``` logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 通过上述配置,日志信息将输出到控制台和文件中,并且可以根据需要调整日志级别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值