mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
dev: add rotating logger
This commit is contained in:
parent
58d82313cc
commit
775d8fbd90
@ -24,7 +24,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
SECRET_KEY = os.environ.get("SECRET_KEY", get_random_secret_key())
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = False
|
||||
DEBUG = int(os.environ.get("DEBUG", "0"))
|
||||
|
||||
# Allowed Hosts
|
||||
ALLOWED_HOSTS = ["*"]
|
||||
@ -369,16 +369,17 @@ LOGGING = {
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "verbose",
|
||||
"formatter": "json",
|
||||
},
|
||||
"file": {
|
||||
"class": "logging.handlers.TimedRotatingFileHandler",
|
||||
"class": "plane.utils.logging.SizedTimedRotatingFileHandler",
|
||||
"filename": (
|
||||
os.path.join(BASE_DIR, "logs", "debug.log")
|
||||
if DEBUG
|
||||
else os.path.join(BASE_DIR, "logs", "error.log")
|
||||
),
|
||||
"when": "midnight",
|
||||
"maxBytes": 1024 * 1024 * 1,
|
||||
"interval": 1, # One day
|
||||
"backupCount": 5, # Keep last 5 days of logs,
|
||||
"formatter": "json",
|
||||
|
46
apiserver/plane/utils/logging.py
Normal file
46
apiserver/plane/utils/logging.py
Normal file
@ -0,0 +1,46 @@
|
||||
import logging.handlers as handlers
|
||||
import time
|
||||
|
||||
|
||||
class SizedTimedRotatingFileHandler(handlers.TimedRotatingFileHandler):
|
||||
"""
|
||||
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
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
filename,
|
||||
maxBytes=0,
|
||||
backupCount=0,
|
||||
encoding=None,
|
||||
delay=0,
|
||||
when="h",
|
||||
interval=1,
|
||||
utc=False,
|
||||
):
|
||||
handlers.TimedRotatingFileHandler.__init__(
|
||||
self, filename, when, interval, backupCount, encoding, delay, utc
|
||||
)
|
||||
self.maxBytes = maxBytes
|
||||
|
||||
def shouldRollover(self, record):
|
||||
"""
|
||||
Determine if rollover should occur.
|
||||
|
||||
Basically, see if the supplied record would cause the file to exceed
|
||||
the size limit we have.
|
||||
"""
|
||||
if self.stream is None: # delay was set...
|
||||
self.stream = self._open()
|
||||
if self.maxBytes > 0: # are we rolling over?
|
||||
msg = "%s\n" % self.format(record)
|
||||
# due to non-posix-compliant Windows feature
|
||||
self.stream.seek(0, 2)
|
||||
if self.stream.tell() + len(msg) >= self.maxBytes:
|
||||
return 1
|
||||
t = int(time.time())
|
||||
if t >= self.rolloverAt:
|
||||
return 1
|
||||
return 0
|
Loading…
Reference in New Issue
Block a user