41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import os
|
|
import datetime
|
|
|
|
|
|
class Logging:
|
|
def __init__(self, timezone, folder=None):
|
|
self.tz = timezone
|
|
self.folder = folder
|
|
self.filename = self.get_filename()
|
|
self.log('------')
|
|
|
|
def get_filename(self):
|
|
files = [f for f in os.listdir(self.folder) if os.path.isfile(os.path.join(self.folder, f)) and 'logging' in f]
|
|
if len(files) > 0:
|
|
filename = files[-1]
|
|
if os.path.getsize(os.path.join(self.folder, filename)) < 1024 * 1024:
|
|
return filename
|
|
today = datetime.datetime.now(tz=self.tz)
|
|
filename = 'logging-{0}.log'.format(today.strftime('%Y-%m-%d'))
|
|
base_name = filename
|
|
n = 1
|
|
while os.path.isfile(os.path.join(self.folder, filename)):
|
|
filename = '-'.join([
|
|
base_name,
|
|
str(n)
|
|
])
|
|
n += 1
|
|
return filename
|
|
|
|
def log(self, message, caller=None):
|
|
now = datetime.datetime.now(tz=self.tz)
|
|
if caller is None:
|
|
msg = '[{0}] {1}.'.format(now.strftime('%Y-%m-%d %H:%M:%S'), message.strip('.'))
|
|
else:
|
|
msg = '[{0}] ({2}) {1}.'.format(now.strftime('%Y-%m-%d %H:%M:%S'), message.strip('.'), caller)
|
|
print(msg)
|
|
if self.folder is not None:
|
|
filename = os.path.join(self.folder, self.filename)
|
|
with open(filename, 'a') as f:
|
|
f.write(msg + "\n")
|