【python库】logging

基础

import logging
import os

log_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'example.log')

logging.warning('Watch out!')
logging.info('I told you so.')

# basicConfig 必须在调用info, debug等之前首先被调用,如果在前面的两行代码没有注释,这里的basicConfig不会生效
logging.basicConfig(filename=log_file, level=logging.DEBUG)
logging.debug('This is debug log.')
logging.info('This is info log.')
logging.warning('This is warn log.')

# 通过命令行的方式
# 假设已经通过命令行 --log=DEBUG或者--log=debug等方式获取到了设定的级别,并且保存到了下面的变量中
loglevel = 'DEBUG'
# 我们可以通过下面的方式进行处理
numeric_level = getattr(logging, loglevel.upper(), None)
if not isinstance(numeric_level, int):
    raise ValueError('Invalid log level: %s' % loglevel)
logging.basicConfig(level=numeric_level)

# basicConfig默认是在日志文件后面追加,如果需要每次写入新的日志内容,可以指定filemode参数为w即可
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

# 日志里面包含变量
var1 = 'var1'
var2 = 1001
logging.warning('The var1 is: %s and var2 is: %d', var1, var2)

# 改变日志格式, datefmt和time模块的strftime格式一致
logging.basicConfig(format='%(asctime)s-%(levelname)s-%(message)s', level=logging.DEBUG, datefmt='%Y%m%d')
logging.info('test message')








import logging
import os


# 日志级别分为了debug, info, warn, error, critical
# 默认情况下只会输出warn级别的日志
# logging.warning('warn-demo, %s', 1)
# logging.info('info-demo')

# 可以通过basicConfig配置日志级别,但是需要在使用任何日志之前进行配置
# logging.basicConfig(level=logging.DEBUG)
# logging.warning('warn-demo, %s', 1)
# logging.info('info-demo')

# 还可以定制化输出结果
# https://docs.python.org/3/library/logging.html#logrecord-attributes
# logging.basicConfig(format='%(asctime)s %(name)s [SKS-%(levelname)s]:  %(message)s', level=logging.DEBUG, datefmt='%Y-%m-%d %H:%M:%S')
# logging.info('test message')

# logger的方式
# logger = logging.getLogger('main')
# logger.setLevel(logging.DEBUG)
# sh = logging.StreamHandler()
# sh.setLevel(logging.DEBUG)
# logger.addHandler(sh)
# logger.debug('debug')

# 输出到文件
# logger = logging.getLogger('main')
# logger.setLevel(logging.DEBUG)
#
# formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
# sh = logging.StreamHandler()
# sh.setLevel(logging.ERROR)
# sh.setFormatter(formatter)
# logger.addHandler(sh)
#
# log_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'log.txt')
# fh = logging.FileHandler(log_file)
# fh.setFormatter(formatter)
# fh.setLevel(logging.DEBUG)
# logger.addHandler(fh)
#
# logger.debug('debug')
# logger.error('error')
#
# other_logger = logging.getLogger('main.sub')
# other_logger.error('other logger')

RotatingFileHandler

# -*- coding:utf-8 -*-

import logging
import os
from logging.handlers import RotatingFileHandler


def mylogger():
    dstfile = os.path.join(os.path.split(os.path.abspath(__file__))[0], "myflask.log")

    formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(name)s - %(levelname)s - %(message)s', "%Y-%m-%d %H:%M:%S")

    handler = RotatingFileHandler(dstfile, maxBytes=1024000, backupCount=10)
    handler.setLevel(logging.DEBUG)
    handler.setFormatter(formatter)

    logger = logging.getLogger("main")
    logger.setLevel(logging.DEBUG)
    logger.addHandler(handler)

    return logger
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值