Reputation: 23
I am using Django logging library to log the data. I am using class-"logging.handlers.TimedRotatingFileHandler" with parameter "when" : "M" and "backupCount" 5. So, it will create a new file every minute and keep 5 latest files in backup and delete the older the files. Here, the file is only created if I restart the server. Any idea, how to create file automatically every minute?
settings.py
BASE_DIR_1 = os.path.dirname(os.path.dirname(__file__))
import logging
import os
from ./logging_formatter import CustomJsonFormatter
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": os.getenv("DJANGO_LOG_LEVEL", "INFO"),
"formatter": "log_shell"
},
"file":
{
"class": "logging.handlers.TimedRotatingFileHandler",
"filename": os.path.join(BASE_DIR_1, 'log_dir/log_file.log')
"level": os.getenv("DJANGO_LOG_LEVEL", "INFO"),
"formatter": "log_file",
"when": "M",
"interval": 1,
"backupCount": 5,
"delay": True
}
},
"loggers": {
"django": {
"handlers": ["file","console"],
"level": os.getenv("DJANGO_LOG_LEVEL", "INFO"),
},
},
"formatters": {
"log_file": { "()": CustomJsonFormatter},
"log_shell": {"()": CustomJsonFormatter}
},
}
logger = logging.getLogger(__name__)
logger.info("clicked")
logger.error("There is an error in the function")
logging_formatter.py
from pythonjsonlogger import jsonlogger
import logging
from datetime import datetime
logger = logging.getLogger()
logHandler = logging.StreamHandler()
class CustomJsonFormatter(jsonlogger.JsonFormatter):
def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
if not log_record.get('timestamp'):
# this doesn't use record.created, so it is slightly off
now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
log_record['timestamp'] = now
if log_record.get('Level'):
log_record['Level'] = log_record['level'].upper()
else:
log_record['Level'] = record.levelname
Upvotes: 0
Views: 20