首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python设置全局记录器和从命令行设置日志记录级别的最佳方法

是使用Python内置的logging模块。

首先,我们需要导入logging模块:

代码语言:python
代码运行次数:0
复制
import logging

然后,我们可以创建一个全局记录器并设置其级别:

代码语言:python
代码运行次数:0
复制
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

这将创建一个名为"root"的全局记录器,并将其级别设置为DEBUG。你可以根据需要将级别设置为其他级别,如INFO、WARNING、ERROR或CRITICAL。

接下来,我们可以创建一个处理程序来处理日志记录。例如,我们可以创建一个将日志记录写入文件的处理程序:

代码语言:python
代码运行次数:0
复制
file_handler = logging.FileHandler('log.txt')
file_handler.setLevel(logging.DEBUG)

这将创建一个名为"log.txt"的日志文件,并将其级别设置为DEBUG。你可以根据需要将级别设置为其他级别。

然后,我们可以创建一个格式化器来定义日志记录的格式:

代码语言:python
代码运行次数:0
复制
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

这将使用指定的格式将日志记录格式化为日期、级别和消息。

最后,我们将处理程序添加到全局记录器中:

代码语言:python
代码运行次数:0
复制
logger.addHandler(file_handler)

现在,我们已经设置了全局记录器和处理程序,可以开始记录日志了。例如,我们可以使用以下代码记录一条DEBUG级别的日志:

代码语言:python
代码运行次数:0
复制
logger.debug('This is a debug message')

如果我们想从命令行设置日志记录级别,可以使用argparse模块解析命令行参数。首先,我们需要导入argparse模块:

代码语言:python
代码运行次数:0
复制
import argparse

然后,我们可以创建一个ArgumentParser对象并添加一个命令行参数来设置日志记录级别:

代码语言:python
代码运行次数:0
复制
parser = argparse.ArgumentParser()
parser.add_argument('--log-level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], default='INFO', help='Set the log level')
args = parser.parse_args()

这将创建一个名为"log-level"的命令行参数,并将其默认值设置为"INFO"。你可以根据需要将默认值设置为其他级别。

接下来,我们可以根据命令行参数设置全局记录器的级别:

代码语言:python
代码运行次数:0
复制
logger.setLevel(args.log_level)

现在,我们可以在命令行中使用"--log-level"参数来设置日志记录级别。例如,我们可以使用以下命令将日志记录级别设置为DEBUG:

代码语言:txt
复制
python script.py --log-level DEBUG

这是设置全局记录器和从命令行设置日志记录级别的最佳方法。你可以根据需要进行调整和扩展,以满足具体的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python日志记录:一个深入的教程

Python标准库附带一个 logging模块,它提供了大部分基本的记录功能。通过正确设置,日志消息可以提供有关日志何时何地被触发以及日志上下文(如正在运行的进程/线程)的大量有用信息。...知道何时发送日志,何处(Python文件,行号,方法等)以及诸如线程和进程之类的附加上下文(在调试多线程应用程序时可能非常有用)可能很有用。...新的记录器可以通过以下方式获得: toto_logger = logging.getLogger("toto") 记录器有三个主要领域: 传播(Propagate):决定是否应将日志传播到记录器的父级。...Python日志记录最佳实践 日志记录模块确实非常方便,但它包含一些怪癖,即使是最好的Python开发人员也可能导致长时间的头痛。...它可以是一个命令行工具,如gdb,pdb(用于Python)或可以嵌入IDE(Visual Studio, idea suites等) 什么是调试日志?

2.1K30
  • 学会充分利用Python中的日志,提升你的编程level

    为什么使用日志而不使用print() 日志记录对于程序员来说是一个非常重要的功能。对于调试和显示运行时信息,日志记录同样有用。在本文中,我将介绍为什么以及如何在程序中使用python的日志模块。...CRITICAL:最高优先级的日志输出。用于关键问题(取决于用例)。 最常见的日志类型有DEBUG、INFO和ERROR。但是,很容易出现python抛出版本不匹配警告的情况。...配置记录器和日志处理程序 记录器可以在不同的参数下配置。日志记录器可以配置为遵循特定的日志级别、文件名、文件模式和打印日志输出的格式。 配置日志采集器参数 日志记录器可以进行如下配置。...上面的设置要求记录器将日志输出到名为program.log的文件中。filemode= ' w '定义了写入文件的性质。例如,'w'打开一个新文件,覆盖在那里的任何东西。...这使我们能够在程序的其他地方重用相同的日志程序。我们将全局日志记录级别设置为DEBUG。这是最低的日志级别,因此允许我们在其他处理程序中使用任何日志级别。

    64230

    开源 Java 微服务应用程序框架 KivaKit 简介

    广播器(Broadcaster)还提供了一种机制,可以通过对类和包的模式匹配,从命令行打开和关闭 Trace 消息。...相同的消息也会广播到 MyComponent 的侦听器,它们可能会被记录或显示在某些用户界面中。 日志记录 KivaKit 日志记录器(Logger)是一个消息侦听器,它记录它听到的所有消息。...基本的 Application 类有一个 Logger,用于记录从组件冒泡到应用程序级别的任何消息。这意味着不需要在应用程序或其任何组件中创建记录器,只要侦听器链从每个组件一直连回应用程序即可。...最简单的日志记录器是 ConsoleLogger。...KivaKit 有一个 SPI,允许从命令行动态添加和配置新的日志记录器。

    86320

    【微服务架构】介绍KivaKit框架

    广播器还提供了一种机制,通过对类和包进行模式匹配,从命令行打开和关闭跟踪消息。 混合 在KivaKit中,有两种实现中继器的方法。第一种方法是简单地扩展BaseRepeater。...,并使用从命令行传递的参数调用应用程序基类中的run()方法。...同样的消息也会广播到MyComponent的监听器,这些消息可能会记录或显示在某些用户界面中。 日志 KivaKit记录器是一个消息侦听器,记录它听到的所有消息。...基本应用程序类有一个日志记录器,用于记录从组件到应用程序级别的任何消息。这意味着不需要在应用程序或其任何组件中创建记录器,只要侦听器链从每个组件一直引导到应用程序。...KivaKit有一个SPI,允许从命令行动态添加和配置新的记录器。

    42420

    Java Review(三十三、异常处理----补充:断言、日志、调试)

    可以很容易地取消全部日志记录,或者仅仅取消某个级别的日志,而且打开和关闭这个操作也很容易。 可以很简单地禁止日志记录的输出, 因此,将这些日志代码留在程序中的开销很小。...基本曰志 要生成简单的日志记录,可以使用全局日志记录器(global logger) 并调用其 info 方法: Logger.getClobal 0,info("File->Open menu item...在一个专业的应用程序中,不要将所有的日志都记录到一个全局日志记录器中,而是可以自定义日志记录器。...例如, 如果对 com.mycompany 日志记录器设置了日志级别,它的子记录器也会继承这个级别 。...通常, 有以下 7 个日志记录器级别: SEVERE WARNING INFO CONFIG FINE FINER FINEST 在默认情况下,只记录前夂个级别。 也可以设置其他的级別。

    60820

    Python 日志处理详解:从基础到实战

    format: 设置日志输出格式,上述格式中包含了时间、级别和消息。1.3 记录日志现在我们可以使用 logging 模块记录日志了。...s')level=logging.DEBUG: 设置日志级别为 DEBUG,表示所有级别的日志都会被记录。...在使用时,我们实例化这个处理器,并将其添加到日志记录器中。7. 异常处理与日志记录在实际开发中,异常处理和日志记录经常结合使用,以便及时捕获和记录程序运行时的错误信息。...配置文件管理日志在实际应用中,通常会使用配置文件来管理日志记录器的配置,而不是在代码中硬编码。这样可以使配置更加灵活,便于在不同环境中调整日志设置。...日志安全性和最佳实践在开发中,确保日志记录的安全性和遵循最佳实践是至关重要的。以下是一些关于日志安全性和最佳实践的建议:15.1 日志敏感信息避免在日志中记录敏感信息,例如密码、API 密钥等。

    47320

    Django日志logging设置

    记录器实例由名称标识。此名称用于标识记录器以进行配置。 按照约定,记录器名称通常为__name__,其中包含记录器的python模块的名称。这使您可以按模块过滤和处理日志记录调用。...好吧,因为可以将记录器设置为将其日志记录传播给父母。这样,就可以在记录器树的根目录中定义一组处理程序,并在记录器的子树中捕获所有日志记录。...记录日志 Making logging calls 记录器logger实例包含每个默认日志级别的输入方法: logger.debug() logger.info() logger.warning() logger.error...为了配置日志记录,您可以使用LOGGING定义日志记录设置的字典。这些设置描述了您希望在日志记录设置中使用的日志记录器,处理程序,过滤器和格式化程序,以及希望这些组件具有的日志级别和其他属性。...# Log an error message logger.info('test info log') 记录器logger实例包含每个默认日志级别的输入方法: logger.debug() logger.info

    3K20

    关于python logging 模块

    可以通过以下命令完成:import logging设置日志级别logging模块提供了多个级别的日志,从严格到宽松分别是:CRITICALERRORWARNINGINFODEBUG默认情况下,日志级别为...可以通过以下命令将日志级别设置为DEBUG:logging.basicConfig(level=logging.DEBUG)创建日志记录器在日志中使用记录器(Logger)可以帮助我们更好地控制日志输出的格式和位置...可以通过以下命令创建一个名为my_logger的记录器:logger = logging.getLogger('my_logger')添加日志记录器到级别如果要在多个记录器中记录日志,需要将它们添加到同一级别...例如,将日志级别设置为WARNING:logging.basicConfig(level=logging.WARNING)然后,可以通过以下命令将my_logger记录器添加到级别:logger.addHandler...然后,使用不同级别的日志记录消息。

    11910

    经典案例之某新闻网站的实现

    一旦设置级别那么大于等于该级别的信息全部都会输出 # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限 file_log_handler = RotatingFileHandler...formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s') # 为刚创建的日志记录器设置日志记录格式...file_log_handler.setFormatter(formatter) # 为全局的日志工具对象(flask app使用的)添加日志记录器 logging.getLogger...一旦设置级别那么大于等于该级别的信息全部都会输出 # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限 file_log_handler = RotatingFileHandler...file_log_handler.setFormatter(formatter) # 为全局的日志工具对象(flask app使用的)添加日志记录器 logging.getLogger

    90020

    Python标准库知识问答:面试必备

    sys:访问与修改系统参数,如命令行参数、环境变量、Python路径等。datetime:日期与时间处理,包括日期运算、格式化与解析。...logging:日志记录模块,支持多级别、多处理器的日志输出。threading与multiprocessing:多线程与多进程编程基础库。...对于可能引发错误的默认值(如非空列表、字典等),考虑使用setdefault()方法或条件判断。...5. logging模块配置与使用误区问题示例:pythonimport logginglogging.warning('This is a warning message')易错点:未配置日志记录器,...应对策略:初始化日志记录器,设置日志级别、处理器(如文件、控制台、邮件等)、格式等。使用模块化日志记录,避免全局配置影响其他模块。

    14710

    【Django | 开发】面试招聘网站(增加csv,excel导出&企业域账号集成&日志管理功能)

    ) 二、列表查询和筛选&页面再优化 三、企业域账号集成 1) 安装应用 2) 设置面试官和HR权限(群组) 四、添加导出为csv功能 六、添加excel导出功能(样式) 五、记录日志以方便排查问题 1)...项目配置 2)在admin中配置python的logging模块 一、实现excel表格导入数据(命令行工具) HR需要人肉输入应聘者数据,非常枯燥和耗时,所以我们进行产品的第二次迭代 – 实现候选人数据的导入...1) 项目配置 记录详细的日志信息可以快速排查问题 和python格式一样,使用 dictConfig格式来定义日志信息,在处理级别时是按照过滤原则,handler处理其级别信息上传到记录器...simple 类 'simple': { 'format': '%(asctime)s , %(name)s [ %(levelname)s ] %(message)s', } }, # 根日志记录器...(父记录器) 'root': { 'handlers': ['console', 'file'], # 记录到文件和控制台中 'level': 'INFO', }, 'loggers':

    35020

    Java基础系列(三十三):日志进阶

    对于一个要被记录的日志记录,它的日志记录级别必须高宇日志记录器和处理器的阈值。...日志管理器配置文件设置的默认控制台处理器的日志记录级别为: java.util.logging.ConsoleHandler.level=INFO 想要记录FINE级别的日志,就必须修改配置文件中的默认日志记录级别和处理器级别...我们的日志记录器都是原始日志记录器(命名为“”)的子类,而原始日志记录器将会把所有等于或高于INFO级别的记录发送到控制台。然而,我们并不想两次看到这些记录。...每个日志记录器和处理器都可以有一个可选的过滤器来完成附加的过滤。另外,可以通过实现Filter接口并定义下列方法来自定义过滤器。...比如: String getHead(Handler h) String getTail(Handler h) 可以给日志记录设置头和尾,最后使用setFormatter方法将格式化器安装到处理器中。

    74950

    如何使用Winston记录Node.js应用程序

    由于我们希望用nodemon作命令行工具,我们将使用-g标志全局安装: $ sudo npm install nodemon -g 要完成应用程序的设置,请切换到应用程序目录并安装依赖项,如下所示: $...第三步, 安装和配置Winston 我们现在准备安装和配置Winston。在这一步,我们将探讨作为winston软件包的一些配置选项,并创建一个将信息记录到文件和控制台的记录器。...本教程专注于控制台和文件传输:控制台传输将信息记录传输到控制台,文件传输将信息记录传输到指定的文件。每个传输定义都可以包含自己的配置设置,例如文件大小,日志级别和日志格式。...这在查看控制台日志时很有用。 记录级别表示消息优先级,并由整数表示。...,将记录该级别或更高级别的任何内容。

    5.6K61

    pytest文档81 - 如何管理Captured logging日志

    ,也可以设置任何记录器的日志级别 def test_foo(caplog): caplog.set_level(logging.CRITICAL, logger="root.baz") 测试结束时...要从其他阶段访问日志,请使用caplog.get_records(when)方法。...您可以通过传递--log-cli-level来指定日志记录的级别,对于该级别,具有相同或更高级别的日志记录将打印到控制台。 此设置接受日志记录文档中显示的日志记录级别名称或数值。...您还可以通过传递--logfile-level来指定日志文件的日志记录级别。此设置接受日志记录文档中显示的日志记录级别名称或数值。...这允许用户自己配置记录器对象。设置log_level将设置全局捕获的级别,因此如果特定测试需要的级别低于此级别,请使用caplog.set_level()功能,否则该测试将容易失败。

    1.2K20

    【Django | 开发】面试招聘网站(增加csv,excel导出&企业域账号集成&日志管理功能)

    str) # 所接受参数为一个字符串 # 处理逻辑 def handle(self, *args, **options): path = options['path'] # 从命令行参数读取...1) 项目配置记录详细的日志信息可以快速排查问题图片和python格式一样,使用 dictConfig格式来定义日志信息,在处理级别时是按照过滤原则,handler处理其级别信息上传到记录器 记录器再根据自身级别过滤上传到...formatters': {# simple 类'simple': {'format': '%(asctime)s , %(name)s [ %(levelname)s ] %(message)s',}},# 根日志记录器...(父记录器)'root': {'handlers': ['console', 'file'], # 记录到文件和控制台中'level': 'INFO',},'loggers': {'django':...:8000图片2)在admin中配置python的logging模块# 得到 当前日志记录对象# logging.basicConfig(level=logging.DEBUG,format="'%(asctime

    17640

    如何在不同的Python模块中自定义日志记录

    在不同的 Python 模块中自定义日志记录是一种常见的需求,尤其是在构建复杂的应用程序时。可以通过以下步骤实现模块间一致性、灵活性和独立的日志记录。...目标是希望在调用init()方法时初始化这些自定义设置。2、解决方案可以使用logging.getLogger(name)方法从日志记录模块获取日志记录器对象,而不是创建一个单独的全局日志记录器。...这样可以获取一个日志记录器对象。 现在可以为日志记录器对象设置其他参数。...,并为每个日志记录器对象设置不同的日志级别和日志格式。...然后,为每个日志记录器对象设置了不同的日志级别和日志格式。 最后,记录了信息、调试和错误信息。

    11810

    Tornado框架的异步代码单元支持同步获取URL在项目里实战的心得和方法

    用于捕获和抑制预期日志输出的上下文管理器。...帮助减少错误条件测试的噪音,同时仍保留意外的日志条目。不是线程安全的。 属性logged_如果堆栈设置为true,则记录任何异常堆栈跟踪。...(或记录器名称)。...传递一个空字符串以监视根记录器。 Regex–要匹配的正则表达式。将禁用指定记录器上与此正则表达式匹配的任何日志条目。 必需–如果为true,则在with语句中不会匹配任何日志条目。...级别—来自日志的模块,指示预期的日志级别。如果提供此参数,则仅此级别的日志消息将被视为匹配项。此外,提供的记录器将在必要时调整其级别(在ExpectLog中启用预期消息)。

    46220

    Python基础语法-内置函数和模块-loging模块

    Python内置模块logging提供了灵活且可配置的日志记录功能,用于记录程序运行过程中的信息、警告和错误等。在日志记录中,可以设置日志级别和输出格式等,以便于调试和排查问题。...日志级别logging模块定义了以下几个日志级别,分别用于记录不同级别的信息:DEBUG:详细的信息,通常用于调试。INFO:确认一切按预期运行。...默认情况下,logging模块只会记录WARNING及以上级别的信息。日志记录器logging模块中的主要对象是Logger类,该类用于创建日志记录器。...每个日志记录器都有一个名称,通常以模块名命名,以便于区分不同的记录器。...)logger.error('This is an error message.')logger.critical('This is a critical message.')在上述代码中,使用不同的方法记录不同级别的信息

    27320
    领券