举例介绍下python 的logger模块

举例介绍下python 的logger模块
Python的`logging`模块是一个强大的日志记录系统,广泛用于记录应用程序的运行信息。它允许开发者定义日志的级别、格式和输出位置,非常灵活和实用。下面是一个简单的例子,介绍如何使用`logging`模块:

### 基本使用

1. **导入模块**
   ```python
   import logging
   ```

2. **配置日志**
   ```python
   logging.basicConfig(level=logging.DEBUG,
                       format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                       datefmt='%Y-%m-%d %H:%M:%S',
                       filename='app.log',
                       filemode='w')
   ```

   - `level=logging.DEBUG`:设置日志级别为DEBUG,这样会记录所有级别的日志信息。
   - `format`:定义日志的格式,包括时间、日志名称、日志级别和消息。
   - `datefmt`:定义时间的格式。
   - `filename='app.log'`:指定日志文件的名称。
   - `filemode='w'`:以写模式打开日志文件,每次运行程序会覆盖之前的日志。

3. **记录日志**
   ```python
   logging.debug('这是一个debug信息')
   logging.info('这是一个info信息')
   logging.warning('这是一个warning信息')
   logging.error('这是一个error信息')
   logging.critical('这是一个critical信息')
   ```

### 高级使用

1. **创建多个日志记录器**
   ```python
   logger = logging.getLogger('my_logger')
   logger.setLevel(logging.DEBUG)

   # 创建一个文件处理器
   file_handler = logging.FileHandler('my_app.log')
   file_handler.setLevel(logging.ERROR)

   # 创建一个控制台处理器
   console_handler = logging.StreamHandler()
   console_handler.setLevel(logging.DEBUG)

   # 定义日志格式
   formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
   file_handler.setFormatter(formatter)
   console_handler.setFormatter(formatter)

   # 添加处理器到日志记录器
   logger.addHandler(file_handler)
   logger.addHandler(console_handler)

   logger.debug('这是一个debug信息')
   logger.info('这是一个info信息')
   logger.warning('这是一个warning信息')
   logger.error('这是一个error信息')
   logger.critical('这是一个critical信息')
   ```

2. **捕获异常并记录**
   ```python
   try:
       1 / 0
   except Exception as e:
       logging.error("发生了一个异常", exc_info=True)
   ```
设置