我编写了一个简单的日志记录程序,它将我发送给它的所有内容附加到一个文件中:
def log(message):
with open ("log.txt", 'a+') as f:
f.write(message + "\n")
Run Code Online (Sandbox Code Playgroud)
但是,我想限制该文件的大小。当它达到最大大小时,我希望它删除第一行并附加在底部。
这可以通过文件处理程序实现吗?还是我需要自己编写代码?我也可以使用旋转文件处理程序,但是我见过的所有示例都让环境在设置级别后自动写入异常,并且我需要控制写入文件的内容。
提前谢谢了!
这是使用 python 内置 RotatingFileHandler 的示例:
import logging
from logging.handlers import RotatingFileHandler
# change to a file you want to log to
logFile = 'log_r.log'
my_handler = RotatingFileHandler(logFile, mode='a', maxBytes=5*1024*1024,
backupCount=2, encoding=None, delay=0)
my_handler.setLevel(logging.INFO)
app_log = logging.getLogger('root')
app_log.setLevel(logging.INFO)
app_log.addHandler(my_handler)
def bad():
raise Exception("Something bad")
if __name__ == "__main__":
app_log.info("something")
try:
app_log.info("trying to run bad")
bad()
except Exception as e:
app_log.info("That was bad...")
finally:
app_log.info("Ran bad...")
Run Code Online (Sandbox Code Playgroud)
该行为与您建议的行为略有不同,因为它不会从文件的开头删除,而是将文件移动到不同的文件名并从头开始。
请注意,当您运行此命令时,日志文件中显示的唯一内容是我们显式记录的文本片段 - 即没有您不想要的系统垃圾。
| 归档时间: |
|
| 查看次数: |
2591 次 |
| 最近记录: |