mirror of https://github.com/midoks/mdserver-web
parent
f685054a9a
commit
ee64e55eca
@ -0,0 +1,61 @@ |
||||
# coding:utf-8 |
||||
|
||||
# --------------------------------------------------------------------------------- |
||||
# MW-Linux面板 |
||||
# --------------------------------------------------------------------------------- |
||||
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved. |
||||
# --------------------------------------------------------------------------------- |
||||
# Author: midoks <midoks@163.com> |
||||
# --------------------------------------------------------------------------------- |
||||
|
||||
|
||||
import re |
||||
from logging import handlers |
||||
|
||||
|
||||
class EnhancedRotatingFileHandler(handlers.TimedRotatingFileHandler, |
||||
handlers.RotatingFileHandler): |
||||
""" |
||||
Handler for logging to a set of files, which switches from one file |
||||
to the next when the current file reaches a certain size, or at certain |
||||
timed intervals |
||||
@filename - log file name |
||||
@max_bytes - file size in bytes to rotate file |
||||
@interval - Duration to rotate file |
||||
@backup_count - Maximum number of files to retain |
||||
@encoding - file encoding |
||||
@when - 'when' events supported: |
||||
# S - Seconds |
||||
# M - Minutes |
||||
# H - Hours |
||||
# D - Days |
||||
# midnight - roll over at midnight |
||||
# W{0-6} - roll over on a certain day; 0 - Monday |
||||
Here we are defaulting rotation with minutes interval |
||||
""" |
||||
def __init__(self, filename, max_bytes=1, interval=60, backup_count=0, |
||||
encoding=None, when='M'): |
||||
max_bytes = max_bytes * 1024 * 1024 |
||||
handlers.TimedRotatingFileHandler.__init__(self, filename=filename, |
||||
when=when, |
||||
interval=interval, |
||||
backupCount=backup_count, |
||||
encoding=encoding) |
||||
|
||||
handlers.RotatingFileHandler.__init__(self, filename=filename, |
||||
mode='a', |
||||
maxBytes=max_bytes, |
||||
backupCount=backup_count, |
||||
encoding=encoding) |
||||
|
||||
# Time & Size combined rollover |
||||
def shouldRollover(self, record): |
||||
return handlers.TimedRotatingFileHandler.shouldRollover(self, record) \ |
||||
or handlers.RotatingFileHandler.shouldRollover(self, record) |
||||
|
||||
# Roll overs current file |
||||
def doRollover(self): |
||||
self.suffix = "%Y-%m-%d_%H-%M-%S" |
||||
self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}(\.\w+)?$" |
||||
self.extMatch = re.compile(self.extMatch, re.ASCII) |
||||
handlers.TimedRotatingFileHandler.doRollover(self) |
Loading…
Reference in new issue