logging模块中的几个参数

logging.debug(), logging.error(), logging.info() ...

以上方法的定义中,除了msg和位置参数args外,还有关键字参数**kwargs,主要有三个关键字参数:

        1. exc_info

                exc_info为布尔值,如果该参数的值为True时,则会将异常信息添加到日志消息中;如果没有则会将None添加到日志信息中。

                比如:logging.error(f'程序运行异常,{str(e)}', exc_info=True)

        2. stack_info

                stack_info值为布尔值,默认为False,如果该参数的值设为True,栈信息将会被添加到日志信息中。

        3. extra

                extra是一个字典参数,它可以用来自定义消息格式中所包含的字段,但是它的key不能与logging模块定义的字段冲突。

举例,以上三种情况举例如下:

    # 日志格式中添加了user、ip两个字段
    import logging

    LOG_FORMAT = "%(asctime)s - %(levelname)s - %(user)s[%(ip)s] - %(message)s"
    DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"

    logging.basicConfig(format=LOG_FORMAT, datefmt=DATE_FORMAT)

    try:
        a = 1 / 0
    except Exception as e:
        logging.error(f"error info: {str(e)}", exc_info=True, stack_info=True,
                      extra={'user': 'Tom', 'ip': '47.98.53.222'})

上面举例的运行结果为:

07/19/2021 11:09:23 AM - ERROR - Tom[47.98.53.222] - error info: division by zero
Traceback (most recent call last):
  File "D:/test/vv_finance_auto_trading_python-dev/bank_login/test.py", line 45, in logging_test
    a = 1 / 0
ZeroDivisionError: division by zero
Stack (most recent call last):
  File "D:/test/vv_finance_auto_trading_python-dev/bank_login/test.py", line 70, in <module>
    logging_test()
  File "D:/test/vv_finance_auto_trading_python-dev/bank_login/test.py", line 48, in logging_test
    extra={'user': 'Tom', 'ip': '47.98.53.222'})
 

如果代码中没有stack_info = True,则栈信息就不会出现在日志信息中。

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(user)s[%(ip)s] - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"

logging.basicConfig(format=LOG_FORMAT, datefmt=DATE_FORMAT)
logging.warning("Some one delete the log file.", exc_info=True,extra={'user': 'Tom', 'ip':'47.98.53.222'})

以上输入信息为:

07/19/2021 11:05:32 AM - ERROR - Tom[47.98.53.222] - error info: division by zero
Traceback (most recent call last):
  File "D:/test/vv_finance_auto_trading_python-dev/bank_login/test.py", line 45, in logging_test
    a = 1 / 0
ZeroDivisionError: division by zero

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pythonlogging模块可以帮助你记录应用程序运行时的信息,以便于进行跟踪和分析。使用logging模块,你可以记录任何级别的消息,从debug级别的调试信息,到警告级别的错误信息,再到严重级别的异常信息。你可以将消息记录到一个文件,或者通过网络传输到另一台计算机,以便进行远程监控。 ### 回答2: Pythonlogging模块是一种用于记录日志的工具,可以帮助我们在开发过程进行日志记录和调试。下面是一个简要的介绍和使用该模块的步骤。 首先,我们需要导入logging模块: ``` import logging ``` 接下来,我们通过配置logging模块来设置日志的输出方式和级别。可以使用如下代码来进行基本的配置: ``` logging.basicConfig(level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', handlers=[ logging.FileHandler("log.txt"), logging.StreamHandler() ]) ``` 上述代码: - `level`参数指定了日志的级别,可以包括`DEBUG`、`INFO`、`WARNING`、`ERROR`和`CRITICAL`等级别。 - `format`参数定义了日志输出的格式,可以使用`%(asctime)s`来表示时间戳,`%(levelname)s`表示日志级别,`%(message)s`表示日志内容。 - `handlers`参数指定了日志的输出目标,可以包括文件和终端等。 设置完配置后,我们就可以使用相应级别的日志函数进行日志的记录。例如,使用`log.debug()`方法记录`DEBUG`级别的日志: ``` logging.debug("This is a debug message") ``` 使用`log.info()`、`log.warning()`、`log.error()`等方法可以分别记录不同级别的日志。 最后,在程序完成后,可以使用`log.shutdown()`方法来关闭日志记录。 以上就是Pythonlogging模块的基本使用方法。通过合理使用logging模块,我们可以更好地进行日志记录和调试,提高程序的可读性和可维护性。 ### 回答3: Pythonlogging模块是用于记录日志的工具。使用该模块可以方便地将程序运行过程的各种信息输出到控制台或者保存到文件,以便后续的查阅和分析。 首先需要导入logging模块,并进行基本的配置。可以通过以下几个步骤来完成: 1. 导入logging模块: import logging 2. 配置日志: logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') 这里设置了日志的级别为DEBUG,即输出所有级别的日志信息;设置了日志的格式,包括时间、日志名称、日志级别和日志内容。 3. 输出日志: 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.') 可以使用不同级别的日志函数输出不同级别的日志信息。 另外,还可以对日志进行更加详细的配置,例如设置日志的保存路径、日志的保存方式(覆盖、追加等)、最大保存文件数量等。通过使用不同的handler来实现。 以下是一个例子: import logging logger = logging.getLogger('app') logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(formatter) fh = logging.FileHandler('app.log') fh.setLevel(logging.WARNING) fh.setFormatter(formatter) logger.addHandler(ch) logger.addHandler(fh) 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.') 这样配置后,日志信息会同时输出到控制台和保存到文件app.log。同时,控制台和文件的日志信息级别由设置的handler决定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值