下面是 Python 日志按日期、大小回滚的操作的完整攻略。
一、使用 logging 模块配置日志
在 Python 中,通常使用 logging 模块来记录日志。首先,我们需要通过 logging.basicConfig()
方法配置 logging 模块,以便在后续使用中直接调用。具体配置方式如下:
import logging
logging.basicConfig(filename='myapp.log', level=logging.INFO)
以上代码将设置日志存储路径为 myapp.log
,并将日志的输出级别设置为 INFO。输出级别详细如下:
logging.CRITICAL
50logging.ERROR
40logging.WARNING
30logging.INFO
20logging.DEBUG
10logging.NOTSET
0
二、按日期回滚日志
日志按日期回滚,一般有两种方式:
- 分割日志文件
代码示例:
import logging
from logging.handlers import TimedRotatingFileHandler
log_filename = "app.log"
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(filename=log_filename, when="d", interval=1, backupCount=7)
handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(levelname)s - %(module)s - %(message)s"))
logger.addHandler(handler)
logger.info("This is a info message.")
在以上代码中,我们首先设置了日志存储文件名 app.log
,代码分别如下:
log_filename = "app.log"
接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:
logger.setLevel(logging.INFO)
通过 TimedRotatingFileHandler
类设置日志的切割格式,代码如下:
handler = TimedRotatingFileHandler(filename=log_filename, when="d", interval=1, backupCount=7)
在 when
参数中,我们设置了按日切割日志文件。另外,多了一个 backupCount
参数,表示保留最近 7 个日志文件,其余日志将被删除。
- 使用日志回滚模块
代码示例:
import logging
import logging.handlers
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)
handler = logging.handlers.TimedRotatingFileHandler(
filename="myapp.log",
when="D",
interval=1,
backupCount=7
)
logger.addHandler(handler)
logger.info("This is a info message.")
在以上代码中,我们首先设置了日志存储文件名 myapp.log
,代码分别如下:
handler = logging.handlers.TimedRotatingFileHandler(
filename="myapp.log",
when="D",
interval=1,
backupCount=7
)
接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:
logger.setLevel(logging.INFO)
通过 TimedRotatingFileHandler
类设置日志的切割格式,代码如下:
handler = logging.handlers.TimedRotatingFileHandler(
filename="myapp.log",
when="D",
interval=1,
backupCount=7
)
在 when
参数中,我们同样设置了按日切割日志文件。另外,backupCount
参数表示保留最近 7 个日志文件,其余日志将被删除。
三、按文件大小回滚日志
日志按文件大小回滚,也有两种方式:
- 分割日志文件
代码示例:
import logging
from logging.handlers import RotatingFileHandler
log_filename = "app.log"
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)
handler = RotatingFileHandler(filename=log_filename, maxBytes=1024*1024, backupCount=7)
handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(levelname)s - %(module)s - %(message)s"))
logger.addHandler(handler)
logger.info("This is a info message.")
在以上代码中,我们首先设置了日志存储文件名 app.log
,代码分别如下:
log_filename = "app.log"
接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:
logger.setLevel(logging.INFO)
然后,我们通过 RotatingFileHandler
类设置日志的切割格式。maxBytes
参数指定了单个日志文件的最大大小,单位为字节;backupCount
参数指定了保存的日志文件数目。当日志文件大小达到 maxBytes
参数时,会按照 backupCount
参数的数目进行备份,代码如下:
handler = RotatingFileHandler(filename=log_filename, maxBytes=1024*1024, backupCount=7)
- 使用日志回滚模块
代码示例:
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)
handler = RotatingFileHandler(
filename="myapp.log",
mode="a",
maxBytes=1024,
backupCount=7,
encoding="utf-8"
)
logger.addHandler(handler)
logger.info("This is a info message.")
在以上代码中,我们首先设置了日志存储文件名 myapp.log
,代码分别如下:
handler = RotatingFileHandler(
filename="myapp.log",
mode="a",
maxBytes=1024,
backupCount=7,
encoding="utf-8"
)
接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:
logger.setLevel(logging.INFO)
然后,我们通过 RotatingFileHandler
类设置日志的切割格式。maxBytes
参数指定了单个日志文件的最大大小,单位为字节;backupCount
参数指定了保存的日志文件数目。当日志文件大小达到 maxBytes
参数时,会按照 backupCount
参数的数目进行备份,代码如下:
handler = RotatingFileHandler(
filename="myapp.log",
mode="a",
maxBytes=1024,
backupCount=7,
encoding="utf-8"
)
以上为按日期、文件大小回滚日志的 Python 实现攻略。如果需要进一步了解 logging 模块的更多知识,可以参考 Python 官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python (logging) 日志按日期、大小回滚的操作 - Python技术站