Package: pyloggor
The easiest and perhaps the most versatile logger for python, in hundred lines.Table of ContentsInstallationUsageConfigAppendixInstallationAs simple aspip install pyloggor!UsageOnce installed, you can access the logger class by importing it like so:from pyloggor import pyloggorInstantize the class using:myLogger = pyloggor()Log something!myLogger.log(level="ERROR", msg="JSON config is corrupt.")ConfigStandardStandard Format.
This currently does not support customizing the base format, however you CAN pass in extra variables per log, which gets added at the end of the standard format string.Standard Format:[P] DATE_TIME LEVEL FILE TOPIC MSG EXTRASLevel.The default level hierarchy is:DEBUG->INFO->WARNING->ERROR->CRITICAL.This means that if the level isWARNING, it will log all WARNINGs, ERRORs, and CRITICALs but not DEBUG and INFO messages.You can pass in a custom level as well, which will not effect the level hierarchy and always print as well as log to file.Colouring.While passing in default or level_colours config, please pass it in the form oflevel_colours={"LEVEL": "[VALID_COLOUR]"}Here,VALID_COLOURcan be any of colours listedhere, additionaly, you can prefix them withboldto make them bold.Initializationfile_output_level,console_output_level:
Different levels for file and console output!pyloggor(file_output_level="DEBUG", console_output_level="ERROR")This will write ALL logs to file but only print ERRORs and CRITICALs to the console.Both default toDEBUG.fn:
The file it will output to, leave empty if it should not output to file.Pass in the file name, or the literal file location- it will create the file if it doens't exist.Defaults to None.console_output:
Set this toFalseif you do not want it to print logs to the console. Defaults toTrue.topic_adjustment_space,file_adjustment_space,level_adjustment_space:The loggor automatically adds whitespace to the end of topics, file names and levels (passed during logging) to make the output appear more... beautiful, as seen belowInput as 0 for no adjustment spacelevel_align,topic_align,file_align:Can be one ofleft,center,centre,right, all default toleft.Alignment of the text when it's wrapped with whitespace due to (4)level_colours:
Defines the colour the log message is printed in.Pass in a dict structure like so:{"DEBUG":"[bold blue]","INFO":"[bold green]","WARNING":"[bold yellow]","ERROR":"[bold red]","CRITICAL":"[bold red]"}Colour names should berichcompliant.If no colour is set, it defaults to above mentioned, and if custom level is used, defaults to[bold white]level_symbols:
Each log level has a level system at the start of the log entry.Pass in a dict structure like so:{"DEBUG":"D","INFO":"I","WARNING":"W","ERROR":"E","CRITICAL":"C"}Defaults to above mentioned and to*for all elseThis will get printed as[D]at the start of all log entries.Check below for a visual example.delim:
Each field is separated by this deliminator, defaults to|(it gets wrapped with a space on each side).datefmt:
The datetime format in which the output is logged, defaults to"%d-%b-%y, %H:%M:%S:%f"It appears something like this:01-Oct-22, 10:35:21:300273Usagelevel: Defaults toDEBUGtopic: The topic of the log entry, defaults to"None"file: The file in which the log entry was done, useful for debugging! Defaults to"NoFile"msg: The actual log message. I have no idea why people do this but it defaults to"NoMessage"extras: A dict, of extras, which are printed beautifully.console_output: boolean, defaults to logger default. Useful if you want to override logger default to print or not to print.file_output: boolean, defaults to logger default. Same usecase as (6).You can also useset_level()to change the default logging level of the logger instance.You an pass infile_output_levelandconsole_output_level, both of which default to logger default if not passed.frompyloggorimportpyloggorlogger=pyloggor(fn="log.txt")logger.log(level="debug",msg="DEBUG",topic="Internal",file="utils/internal.py")logger.log(level="info",msg="This is an info message",topic="Info",file="info.py",file_output=False)logger.log(level="warning",msg="Something is not right here.",topic="Listener",extras={"clientOid":"1c7c36d3464f11edb212b89a2a091df6","clientName":"Joe"})logger.log(level="error",msg="I caught an error.",topic="Error Handling",file="eh.py")logger.log(level="critical",msg="Unhandled exception.",topic="MAIN",file="main.py",console_output=False)logger.log(level="custom",msg="This is custom",topic="customized",file="test/custom.py")AppendixFind this incomplete?Create anissue!
Just check mimain profileand my site, leave a star if ye liked this!