Skip to main content

Easy logs with rotations

Project description

Easy logs with rotations

Donate License PyPi PyPI Downloads codecov Code style: black Build Status Python

Logs

  • Parameters for all classes are declared as OPTIONAL
  • If any .env variable is omitted, it falls back to default values here: settings.py
  • Function arguments will overwrite any env variable
  • Timezone parameter can also accept localtime, default to UTC
    • 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
  • Streamhandler parameter will add stream handler along with file handler
  • Showlocation parameter will show the filename and the line number where the message originated

Install

pip install pythonLogs

BasicLog

  • 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")

Example of output

[2024-10-08T19:08:56.918-0300]:[WARNING]:[app]:This is a warning example

SizeRotatingLog

  • 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
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")

Example of output

[2024-10-08T19:08:56.918-0500]:[WARNING]:[app]:This is a warning example

TimedRotatingLog

  • Setup Logging
    • Logs will rotate based on when variable to a .gz file, defaults to midnight
    • 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
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")

Example of output

[2024-10-08T19:08:56.918-0000]:[WARNING]:[app]:This is a warning example

Env Variables (Optional)

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

Source Code

Build

poetry build -f wheel

Run Tests and Get Coverage Report using Poe

poetry update --with test
poe tests

License

Released under the MIT License

Buy me a cup of coffee

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythonlogs-3.0.12.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pythonlogs-3.0.12-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file pythonlogs-3.0.12.tar.gz.

File metadata

  • Download URL: pythonlogs-3.0.12.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pythonlogs-3.0.12.tar.gz
Algorithm Hash digest
SHA256 eeb20579d188dbf50d75fbbe085d6fe1b8ed37ae44b5803e2fcdb044120e3fc0
MD5 8fd4a04cf5a19efc1b1e4792fd91e592
BLAKE2b-256 ddf8ae0bd8cb25fb4ddaf7009255279cc62b4237117e65c02574ae085cc3cadb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythonlogs-3.0.12.tar.gz:

Publisher: workflow.yml on ddc/pythonLogs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pythonlogs-3.0.12-py3-none-any.whl.

File metadata

  • Download URL: pythonlogs-3.0.12-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pythonlogs-3.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 d6b205c5e54b8045e4356f3a3a0a0eb7973eb13096f771d64fedc9acab9cac32
MD5 8d15f60c689c187cfcae5be625c8dfde
BLAKE2b-256 babadebb16c2310943dff5dce28789bb205a981536319605da3dbe57911573b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythonlogs-3.0.12-py3-none-any.whl:

Publisher: workflow.yml on ddc/pythonLogs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page