Skip to main content

An ugly, slow Logger class for python

Project description

uglylogger

An ugly, slow Logger class for python

FAQ

Why required python version is equal or greater than 3.10?

  • match .. case .. is introduced in 3.10 and I am not interested in supporting older releases

Why is it ugly?

  • I am not an expert on Python
  • It is not thread-safe
  • I don't know what happens if two instances are created with the same name, and I don't care. I'd never do that
  • The solo purpose is to have an easy to use and easy to read logger class

Why is it ugly but not that ugly?

  • it is easy to use and easy to read
  • I may keep this library up-to-date and even optimize it in the future
  • at least it has a CI/CD pipeline

Installation

pip install uglylogger

Release Notes

Release notes

Usage

Instantiate

# A logger which can log both to console and to a file
logger = Logger("name", "file.log")  

# A logger which can only log to console
logger = Logger("name")  

Release the resources

logger.release()
  • Releases the resources, it's safe to delete the log file after calling this method

Color Mode

logger.set_color_mode(LogColorMode.COLORED)
  • coloroed output if the console/terminal supports it
logger.set_color_mode(LogColorMode.MONO)
  • no color used for the console/terminal output

Log to console

logger.console("Message", color=LogColor.BLACK, level=LogLevel.DEBUG)
  • color and level are optional
  • if not provided, default color is BLACK
  • if not provided, default level is DEBUG

Log to file

logger.file("Message", level=LogLevel.DEBUG)
  • level is optional
  • if not provided, default level is DEBUG
  • if instantiated without a file name, nothing happens

Log to both file and console

logger.log("Message", color=LogColor.BLACK, level=LogLevel.DEBUG, output=LogOutput.ALL)
  • color, level and output are optional
  • if not provided, default color is BLACK
  • if not provided, default level is DEBUG
  • if not provided, default output is ALL
  • if instantiated without a file name, writing to file is ignored

Other ways of logging

logger.debug("Message", color=LogColor.BLACK, output=LogOutput.ALL)
logger.info("Message", color=LogColor.BLACK, output=LogOutput.ALL)
logger.warning("Message", color=LogColor.BLACK, output=LogOutput.ALL)
logger.error("Message", color=LogColor.BLACK, output=LogOutput.ALL)
logger.critical("Message", color=LogColor.BLACK, output=LogOutput.ALL)

Available LogColor

- BLACK
- RED
- GREEN
- YELLOW
- BLUE
- MAGENTA
- CYAN
- WHITE

Available LogLevel

- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL

Available LogOutput

- NONE
- CONSOLE
- FILE
- ALL

set log format

logger.set_format([
    ...
    LogFormatBlock.XXX
    ...
])

Available LogFormatBlock

- NAME
- LEVEL
- DATETIME
- MESSAGE
- FILE
- LINE
- FUNCTION

Example Formats

logger.set_format([LogFormatBlock.MESSAGE])
logger.console("Hello World!")
# Output : Hello World!
logger.set_format([
    "[",
    LogFormatBlock.LEVEL,
    "] ",
    LogFormatBlock.MESSAGE]
)
logger.console("Hello World!")
# Output : [DEBUG] Hello World!

Move the log file to another location

logger.move(new_file: str, option: LogMoveOption)
# Output : Hello World!

Available LogMoveOption

- MOVE_AND_APPEND  
   Moves the log file to the destination
   Deletes if there's already a file in the destination
   Appends to the moved file
   Old file is obviously deleted
- COPY_AND_APPEND  
   Copies the log file to the destination
   Deletes if there's already a file in the destination
   Appends to the moved file
   Old file is obviously remains    
- KEEP_AND_APPEND  
   Keeps the old log file
   Appends if there's already a file in the destination
   Creates a new file if not
- KEEP_AND_INIT  
   Keeps the old log file
   Creates a new file in the destination    
- DELETE_AND_INIT  
   Deletes the old log file
   Creates a new file in the destination

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

uglylogger-0.6.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

uglylogger-0.6.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file uglylogger-0.6.0.tar.gz.

File metadata

  • Download URL: uglylogger-0.6.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for uglylogger-0.6.0.tar.gz
Algorithm Hash digest
SHA256 86efe458e98a11b84b7b76aa3082d7693fe66838b120d3f9eb4b62373a38248f
MD5 15965af7dcf8e91e90f6d2d2eb6c368b
BLAKE2b-256 fa894c6fcfc7c02661c18625210cab48ccb1407f04c5309760f3c0528657777b

See more details on using hashes here.

Provenance

File details

Details for the file uglylogger-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: uglylogger-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for uglylogger-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9522e16d1ba9ba66e11bf7b263b64a443e01d5d6546ce8ca2475c9b54a8c206
MD5 7ecec70ce6f513e0acdf9dc0d0e884ea
BLAKE2b-256 dad5705873b5985b5d36d11986a17138c3f9c7c25a3e7826afc39214f82bbc90

See more details on using hashes here.

Provenance

Supported by

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