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)
```