logging.setLevel()不同级别的意义
时间: 2024-09-19 11:11:02 浏览: 36
`logging.setLevel()`函数用于设置日志记录器的日志级别。不同级别代表了不同的严重性或详细程度:
1. **DEBUG** (默认): 当设置为DEBUG时,记录器会记录所有级别的消息,通常用于开发阶段,以获取详细的调试信息。
```python
logger.setLevel(logging.DEBUG)
```
2. **INFO**: 这是最常见的日志级别,仅记录重要的操作或事件,如完成某个功能或达到里程碑。
```python
logger.setLevel(logging.INFO)
```
3. **WARNING**: 主要用于警告,表示可能存在问题但不需要立即干预的情况。
```python
logger.setLevel(logging.WARNING)
```
4. **ERROR**: 表示发生了错误,程序无法正常运行,这通常是应用程序应该采取纠正措施的点。
```python
logger.setLevel(logging.ERROR)
```
5. **CRITICAL**: 最严重的级别,表明系统崩溃或其他致命情况,需要立即停止服务并修复。
```python
logger.setLevel(logging.CRITICAL)
```
通过调整这个级别,你可以控制哪些类型的事件会被记录下来,以便更好地管理和诊断代码行为。在上述代码示例中,`logging.WARN`设置为日志级别意味着只有警告和更严重级别的消息会被记录。
相关问题
def logging_config(folder=None, name=None, level=logging.DEBUG, console_level=logging.DEBUG, no_console=True): if not os.path.exists(folder): os.makedirs(folder) for handler in logging.root.handlers: logging.root.removeHandler(handler) logging.root.handlers = [] logpath = os.path.join(folder, name + ".log") print("All logs will be saved to %s" %logpath) logging.root.setLevel(level) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') logfile = logging.FileHandler(logpath) logfile.setLevel(level) logfile.setFormatter(formatter) logging.root.addHandler(logfile) if not no_console: logconsole = logging.StreamHandler() logconsole.setLevel(console_level) logconsole.setFormatter(formatter) logging.root.addHandler(logconsole) return folder
这段代码是用来配置日志记录器的,它可以将日志记录到文件中并且可以在控制台中输出。其中,参数 folder 表示日志文件夹,name 表示日志文件名,level 表示日志级别,console_level 表示控制台日志级别,no_console 表示是否在控制台中输出日志。函数首先检查文件夹是否存在,如果不存在则创建文件夹。然后移除所有的处理器并重新设置处理器,设置日志记录的级别和格式,创建一个文件处理器并添加到根处理器中,如果 no_console 的值为 False,则创建一个控制台处理器并添加到根处理器中。最后返回日志文件夹的路径。
def logging_builder(args): logger = logging.getLogger(__file__) logger.setLevel(logging.DEBUG) consoleHandler = logging.StreamHandler() consoleHandler.setLevel(logging.DEBUG) fileHandler = logging.FileHandler(os.path.join(os.getcwd(), args.log_name), mode='w') fileHandler.setLevel(logging.DEBUG) formatter = logging.Formatter('[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') consoleHandler.setFormatter(formatter) fileHandler.setFormatter(formatter) logger.addHandler(consoleHandler) logger.addHandler(fileHandler) return logger
这是一个用于构建日志记录器的函数。它使用Python的logging模块来创建一个日志记录器,并设置日志级别为DEBUG。
函数接受一个参数args,可能是一个命名空间对象或包含相关配置的对象。
函数首先创建一个名为logger的日志记录器,其名称基于当前文件名。然后,设置日志级别为DEBUG。
接下来,创建一个控制台处理器(consoleHandler),用于将日志消息打印到控制台。设置该处理器的日志级别为DEBUG。
然后,创建一个文件处理器(fileHandler),用于将日志消息写入文件。文件名由args.log_name指定,文件模式为'w'(写入模式)。同样,设置该处理器的日志级别为DEBUG。
然后,创建一个格式化器(formatter),用于定义日志消息的格式。格式中包含了时间戳、文件名、行号、日志级别和消息内容,并指定了日期时间的格式。
将控制台处理器和文件处理器分别设置为使用相同的格式化器。
最后,将控制台处理器和文件处理器添加到日志记录器中,并返回该日志记录器。
这个函数的作用是创建一个配置好的日志记录器,方便后续在代码中进行日志记录。
阅读全文