- Arguments for all classes are declared as OPTIONAL
- arguments takes priority over environment variables
- If any .env variable is omitted, it falls back to default values here: settings.py
- Timezone parameter can also accept
localtime
, default toUTC
- This parameter is only to display the timezone datetime inside the log file
- For timed rotation, only UTC and localtime are supported, meaning it will rotate at UTC or localtime
- env variable to change between UTC and localtime is
LOG_ROTATE_AT_UTC
and default to True
- env variable to change between UTC and localtime is
- Streamhandler parameter will add stream handler along with file handler
- Showlocation parameter will show the filename and the line number where the message originated
pip install pythonLogs
- Setup Logging
- This is just a basic log, it does not use any file
from pythonLogs import BasicLog
logger = BasicLog(
level="debug",
name="app",
timezone="America/Sao_Paulo",
showlocation=False,
).init()
logger.warning("This is a warning example")
[2024-10-08T19:08:56.918-0300]:[WARNING]:[app]:This is a warning example
- Setup Logging
- Logs will rotate based on the file size using the
maxmbytes
variable - Rotated logs will have a sequence number starting from 1:
app.log_1.gz, app.log_2.gz
- Logs will be deleted based on the
daystokeep
variable, defaults to 30
- Logs will rotate based on the file size using the
from pythonLogs import SizeRotatingLog
logger = SizeRotatingLog(
level="debug",
name="app",
directory="/app/logs",
filenames=["main.log", "app1.log"],
maxmbytes=5,
daystokeep=7,
timezone="America/Chicago",
streamhandler=True,
showlocation=False
).init()
logger.warning("This is a warning example")
[2024-10-08T19:08:56.918-0500]:[WARNING]:[app]:This is a warning example
- Setup Logging
- Logs will rotate based on
when
variable to a.gz
file, defaults tomidnight
- Rotated log will have the sufix variable on its name:
app_20240816.log.gz
- Logs will be deleted based on the
daystokeep
variable, defaults to 30 - Current 'when' events supported:
- midnight — roll over at midnight
- W{0-6} - roll over on a certain day; 0 - Monday
- Logs will rotate based on
from pythonLogs import TimedRotatingLog
logger = TimedRotatingLog(
level="debug",
name="app",
directory="/app/logs",
filenames=["main.log", "app2.log"],
when="midnight",
daystokeep=7,
timezone="UTC",
streamhandler=True,
showlocation=False
).init()
logger.warning("This is a warning example")
[2024-10-08T19:08:56.918-0000]:[WARNING]:[app]:This is a warning example
LOG_LEVEL=DEBUG
LOG_TIMEZONE=America/Chicago
LOG_ENCODING=UTF-8
LOG_APPNAME=app
LOG_FILENAME=app.log
LOG_DIRECTORY=/app/logs
LOG_DAYS_TO_KEEP=30
LOG_STREAM_HANDLER=True
LOG_SHOW_LOCATION=False
LOG_DATE_FORMAT=%Y-%m-%dT%H:%M:%S
# SizeRotatingLog
LOG_MAX_FILE_SIZE_MB=10
# TimedRotatingLog
LOG_ROTATE_WHEN=midnight
LOG_ROTATE_AT_UTC=True
poetry build -f wheel
poetry update --with test
poe test
Released under the MIT License