Python日志打印

Python日志打印

1.常见用法

import logging
logging.warning('Warning Message')

2.日志输出等级

默认输出级别为Warning,只会输出级别高于30 的日志

LevelNumeric value
CRITICAL50
ERROR40
WARNING30
INFO20
DEBUG10
NOTSET0
logging.debug('Debug Message')
logging.info('Info Message')
logging.warning('Warning Message')
logging.error('Error Message')
logging.critical('Critical Message')
#自定义输出级别
logging.log(60, 'My Log Message')

3.日志配置

  • 使用硬编码配置

    import logging
    logging.basicConfig(
       filename='app.log', #配置文件路径,输出日志保存到文件
       level=logging.WARNING, #设置日志输出等级
       format='[%(asctime)s]%(levelname)s:%(message)s') #自定义日志格式
  • 通过配置文件配置

    import logging
    import logging.config
    logging.config.fileConfig('logconfig.ini')

    logconfig.ini 文件内容

    [loggers]
    keys=root
    
    [handlers]
    keys=defaultHandler
    
    [formatters]
    keys=defaultFormatter
    
    [logger_root]
    level=INFO
    handlers=defaultHandler
    qualname=root
    
    [handler_defaultHandler]
    class=FileHandler
    formatter=defaultFormatter
    args=('app.log', 'a')
    
    [formatter_defaultFormatter]
    format=%(levelname)s:%(name)s:%(message)s

4.高级用法

import logging
from logging import handlers


def main():
    #初始化logger
    logger = logging.getLogger()
    #设置日志记录级别
    logger.setLevel(logging.INFO)
    #fmt设置日志输出格式,datefmt设置 asctime 的时间格式
    formatter = logging.Formatter(fmt='[%(asctime)s]%(levelname)s:%(message)s',
                                  datefmt='%m/%d/%Y %I:%M:%S %p')
    #配置日志输出到控制台
    console = logging.StreamHandler()
    console.setLevel(logging.WARNING)
    console.setFormatter(formatter)
    logger.addHandler(console)
    #配置日志输出到文件
    file_logging = logging.FileHandler('app.log')
    file_logging.setLevel(logging.WARNING)
    file_logging.setFormatter(formatter)
    logger.addHandler(file_logging)
    #配置日志输出到文件,限制单个日志文件的最大体积
    file_rotating_file = handlers.RotatingFileHandler('app_rotating.log', maxBytes=1024, backupCount=3)
    file_rotating_file.setLevel(logging.WARNING)
    file_rotating_file.setFormatter(formatter)
    logger.addHandler(file_rotating_file)
    #配置日志输出到文件,在固定的时间内记录日志文件
    file_time_rotating = handlers.TimedRotatingFileHandler("app_time.log", when="s", interval=10, backupCount=5)
    file_time_rotating.setLevel(logging.INFO)
    file_time_rotating.setFormatter(formatter)
    logger.addHandler(file_time_rotating)
    #use
    logger.debug('Debug Message')
    logger.info('Info Message')
    logger.warning('Warning Message')
    logger.error('Error Message')
    logger.critical('Critical Message')
    logging.log(60, 'My Log Message')


if __name__ == '__main__':
    main()
Python中,打印日志可以使用标准库中的`logging`模块。`logging`模块提供了一个灵活的方式来记录程序运行时产生的信息,可以控制日志的级别、输出位置以及格式等。 以下是一个简单的打印日志的示例: ```python import logging # 配置日志输出的格式 logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', level=logging.INFO) # 输出日志信息 logging.debug('This is a debug message.') logging.info('This is an info message.') logging.warning('This is a warning message.') logging.error('This is an error message.') logging.critical('This is a critical message.') ``` 输出的日志格式为`时间 日志级别: 日志信息`,如下所示: ``` 2021-10-08 17:26:46,229 INFO: This is an info message. 2021-10-08 17:26:46,229 WARNING: This is a warning message. 2021-10-08 17:26:46,229 ERROR: This is an error message. 2021-10-08 17:26:46,229 CRITICAL: This is a critical message. ``` 可以看出,日志信息按照级别进行输出,级别从低到高依次是`DEBUG`、`INFO`、`WARNING`、`ERROR`和`CRITICAL`,默认的级别是`WARNING`,可以通过`basicConfig()`函数的`level`参数来设置输出的最低级别。 除了上面的方式外,还可以使用`Logger`类来记录日志,可以更加灵活地控制日志的输出。例如,可以创建一个名为`mylogger`的日志记录器,并设置其输出级别为`DEBUG`: ```python import logging # 创建一个名为'mylogger'的Logger对象 logger = logging.getLogger('mylogger') logger.setLevel(logging.DEBUG) # 配置日志输出的格式 formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') # 创建一个输出到控制台的Handler对象 console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) console_handler.setFormatter(formatter) # 将Handler对象添加到Logger对象中 logger.addHandler(console_handler) # 输出日志信息 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.') ``` 输出结果与前面的示例相同,但是使用的是`mylogger`这个记录器,并且可以更加灵活地控制日志的输出方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值