python日志模块的when可以选哪些参数,意义是什么
时间: 2023-05-10 09:55:51 浏览: 111
Python日志模块的when参数可以选以下几个值:
- 'S':每秒钟都会滚动日志文件。
- 'M':每分钟都会滚动日志文件。
- 'H':每小时都会滚动日志文件。
- 'D':每天都会滚动日志文件。
- 'W':每周都会滚动日志文件。
- 'midnight':每天午夜都会滚动日志文件。
这些参数用于指定日志文件的滚动时间,即何时创建新的日志文件。例如,如果when参数设置为'D',则每天都会创建一个新的日志文件。
相关问题
python logger模块 设置大小无效
可能原因:
1. 没有设置 rollover 的方式
2. 没有配置文件句柄的数量
解决方法:
1. 设置 rollover 的方式,可以使用RotatingFileHandler实现日志的循环写入,当日志文件大小达到设定值时,会自动备份并创建新的日志文件。
```python
import logging.handlers
handler = logging.handlers.RotatingFileHandler(
filename='mylog.log', maxBytes=1024*1024, backupCount=5)
```
2. 配置文件句柄的数量,可以使用TimedRotatingFileHandler实现日志的按时间循环写入,每隔一段时间就创建一个新的日志文件。
```python
import logging.handlers
handler = logging.handlers.TimedRotatingFileHandler(
filename='mylog.log', when='midnight', backupCount=5)
```
注意:当使用TimedRotatingFileHandler时,maxBytes参数无效,因为日志文件的大小是按时间循环写入的。
python 中 设置gunicorn的日志以天为单位
要将Gunicorn的日志设置为按天轮换,可以使用Python的logging模块中的TimedRotatingFileHandler。以下是一个示例配置:
```python
import logging
from logging.handlers import TimedRotatingFileHandler
from gunicorn import glogging
class CustomLogger(glogging.Logger):
def setup(self, cfg):
super().setup(cfg)
handler = TimedRotatingFileHandler(
filename="gunicorn.log",
when="midnight",
interval=1,
backupCount=7
)
formatter = logging.Formatter(fmt="%(asctime)s [%(process)d] [%(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
handler.setFormatter(formatter)
self.logger.addHandler(handler)
```
上述代码中,我们定义了一个CustomLogger类,继承自gunicorn的Logger类,并重写了setup()方法。在该方法中,我们创建了一个TimedRotatingFileHandler实例,设置了日志文件名为"gunicorn.log",轮换方式为每天一次,保留7个备份日志文件。接着,我们定义了一个Formatter实例,设置了日志输出的格式。最后,我们将TimedRotatingFileHandler实例添加到Logger中。
要使用这个CustomLogger类,只需要在Gunicorn配置文件中指定logger_class为该类即可:
```bash
gunicorn --logger-class myapp.CustomLogger myapp:app
```
这样就会将Gunicorn的日志设置为按天轮换,并输出到"gunicorn.log"文件中。