mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2024-12-01 21:09:10 -06:00
60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2023, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
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)
|