From 5f55ab280735002ca5311e54adfc6655136d8014 Mon Sep 17 00:00:00 2001 From: Muhammad Fiaz Date: Thu, 28 Mar 2024 20:54:16 +0530 Subject: [PATCH] v0.0.6 (#20) * v0.0.6 pre -> added logo and doc improvements --- .gitignore | 4 +++ .idea/.gitignore | 2 ++ README.md | 69 +++++++++++++++++++++++++++++++----------- assets/logly_logo.png | Bin 0 -> 20852 bytes logly/__init__.py | 2 +- logly/exception.py | 2 +- logly/logly.py | 46 ++++++++++++++-------------- logly/version.py | 2 +- setup.py | 4 +-- 9 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 assets/logly_logo.png diff --git a/.gitignore b/.gitignore index e69de29..15d9ce5 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,4 @@ +.venv +.idea +*.iml +*.ipr \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore index 781220d..b553910 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -8,3 +8,5 @@ /dataSources.local.xml # Zeppelin ignored files /ZeppelinRemoteNotebooks/ +# GitHub Copilot persisted chat sessions +/copilot/chatSessions diff --git a/README.md b/README.md index 6144059..4b85565 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
-Sample Image +Sample Image # Logly @@ -22,14 +22,15 @@
+Tired of writing custom logging code for your Python applications? -Logly is a customizable logging utility for Python that provides an easy way to log messages with different levels, colors, and options. It is designed to be flexible, allowing you to customize the log messages based on your application's needs. Logly supports logging to both the console and a file, and it comes with built-in color-coded log levels for better visibility. +Logly is a ready to go logging utility that provides an easy way to log messages with different levels, colors, and many custom options. It is designed to be flexible, allowing you to customize the log messages based on your application's needs. Logly supports logging to both the console and a file, and it comes with built-in color-coded log levels for better visibility. -if you like this project make sure to star 🌟 it in the [repository](https://github.com/muhammad-fiaz/logly/) and if you want to contribute make sure to fork this repository❤✨. +if you like this project, make sure to star 🌟 it in the [repository](https://github.com/muhammad-fiaz/logly/) and if you want to contribute make sure to fork this repository❤✨. ## Table of Contents -1. [Introduction](#readme) +1. [Introduction](#) 2. [Installation](#installation) 3. [Features](#features) 4. [Usage](#usage) @@ -46,6 +47,7 @@ if you like this project make sure to star 🌟 it in the [repository](https://g 11. [Support the Project](#support-the-project) 12. [Happy Coding](#happy-coding) + ## Features - Easy-to-use logging for Python applications. @@ -55,7 +57,10 @@ if you like this project make sure to star 🌟 it in the [repository](https://g - Log to file with automatic file rotation. - Log to file with automatic file size management. - Log to file with automatic file deletion. -- Log to file with automatic deletion and rewriting of the file when it reaches max_file_size. +- Log to file with automatic deletion and rewriting of the file when it reaches max_file_size. +- Open Source: Logly is an open-source project, and we welcome contributions from the community. +- Community Support: Join a community of developers using Logly for their logging needs. +- many more features! ## Getting Started @@ -91,10 +96,10 @@ logly.fatal("Key6", "Value6", color=logly.COLOR.CRITICAL) logly.trace("Key7", "Value7", color=logly.COLOR.BLUE) logly.log("Key8", "Value8", color=logly.COLOR.WHITE) -# Stop logging ( messages will be displayed but not logged in file after this point) +# Stop logging (messages will be displayed but not logged in file after this point) logly.stop_logging() -# Log more messages after stopping logging ( messages will be displayed but not logged in file after this point) +# Log more messages after stopping logging (messages will be displayed but not logged in file after this point) logly.info("AnotherKey1", "AnotherValue1", color=logly.COLOR.CYAN) logly.warn("AnotherKey2", "AnotherValue2", color=logly.COLOR.YELLOW) logly.error("AnotherKey3", "AnotherValue3", color=logly.COLOR.RED) @@ -105,7 +110,7 @@ logly.info("hello this is log", color=logly.COLOR.RED,show_time=False) # with cu # Start logging again logly.start_logging() -# Set default file path and max file size +# Set the default file path and max file size logly.set_default_file_path("log.txt") # Set the default file path is "log.txt" if you want to set the file path where you want to save the log file. logly.set_default_max_file_size(50) # set default max file size is 50 MB @@ -114,7 +119,7 @@ logly.info("DefaultKey1", "DefaultValue1") logly.warn("DefaultKey2", "DefaultValue2") logly.error("DefaultKey3", "DefaultValue3", log_to_file=False) -#DEFAULT FILE SIZE IS 100 MB in the txt file +#The DEFAULT FILE SIZE IS 100 MB in the txt file # Log messages with custom file path and max file size(optional) logly.info("CustomKey1", "CustomValue1", file_path="path/c.txt", max_file_size=25) # max_file_size is in MB and create a new file when the file size reaches max_file_size logly.warn("CustomKey2", "CustomValue2", file_path="path/c.txt", max_file_size=25,auto=True) # auto=True will automatically delete the file data when it reaches max_file_size @@ -152,22 +157,49 @@ for message in logly.logged_messages: 11. enable/disable timestamp support 12. enable/disable color for log support -for more information check the [repository](https://github.com/muhammad-fiaz/logly) +for more information, check the [repository](https://github.com/muhammad-fiaz/logly) + +## Set the Default Path -## Set Default Path If you encounter an error related to the default file path, you can use the following code snippet to set the default path: ```python3 +import os +from logly import Logly + logly = Logly() logly.start_logging() -# Set default file path and maximum file size +# Set the default file path and maximum file size logly.set_default_max_file_size(50) logger = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt") logly.set_default_file_path(logger) ``` This will set the default file path, and you can customize it according to your requirements. +if you want to set the default path for the log file, you can use the following code snippet + +```python3 +from logly import Logly +logly = Logly() +logly.set_default_file_path("log.txt") +``` + +if you faced an error like [`FileNotFoundError: [Errno 2] No such file or directory: 'log.txt'`](https://github.com/muhammad-fiaz/logly/issues/4) you can use the following code snippet to set the default path + +```python3 +import os +from logly import Logly + +logly = Logly() # initialize the logly +logly.start_logging() # make sure to include this or else the log will only display without storing it + +logly.set_default_max_file_size(50) # optional +logger = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt") # This will ensure the path location to create the log.txt on current directory +logly.set_default_file_path(logger) +``` +for more information, check the [repository](https://github.com/muhammad-fiaz/logly). + ## Color Options: ### Default Color Options: @@ -195,7 +227,7 @@ You can use any of the following color codes for custom coloring: | BRIGHT RED | CRITICAL | |WHITE | WHITE | -For example, you can use `color=logly.COLOR.BLACK` for the black color. +For example, you can use `color=logly.COLOR.RED` for the red color. ## Tips & Tricks If you want to use logly in your project files without creating a new object in each Python file or class, you can create a file named logly.py. In this file, initialize logly and configure the defaults. Now, you can easily import and use it throughout your project: @@ -204,12 +236,13 @@ If you want to use logly in your project files without creating a new object in ```python3 # logly.py in your root or custom path # Import Logly -from logly import Logly +from logly import Logly +import os logly = Logly() logly.start_logging() -# Set default file path and maximum file size +# Set the default file path and maximum file size logly.set_default_max_file_size(50) logger = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt") # This will ensure the path location to create the log.txt logly.set_default_file_path(logger) @@ -247,13 +280,13 @@ This project is licensed under the [MIT License](). See [LICENSE](LICENSE) for m
-
💰 You can help me improve more by offering a little support on any platform❤️
- +_Support the Project by Becoming a Sponsor on GitHub_ [![Sponsor muhammad-fiaz](https://img.shields.io/badge/Sponsor-%231EAEDB.svg?&style=for-the-badge&logo=GitHub-Sponsors&logoColor=white)](https://github.com/sponsors/muhammad-fiaz) +
-## Happy Coding ❤️ +## Happy Coding diff --git a/assets/logly_logo.png b/assets/logly_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cd63036406b3e74f6bcedb884dc2db4916a5eaff GIT binary patch literal 20852 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. """ - import os from colorama import Fore, Style, init from datetime import datetime import re -from logly.exception import FilePathNotFoundException, FileAccessError, FileCreationError, LoglyException +from logly.exception import FilePathNotFoundException, FileAccessError, FileCreationError init(autoreset=True) @@ -148,7 +147,7 @@ def get_current_datetime(self): def remove_color_codes(self, text): """ - Remove ANSI color codes from text. + Remove ANSI color codes from a text. Parameters: - text (str): Input text with color codes. @@ -245,7 +244,7 @@ def _log(self, level, key, value, color=None, log_to_file=True, file_path=None, count += 1 file_path = f"{file_base}_{count}{file_ext}" - # Open the file in append mode, creating it if it doesn't exist + # Open the file in appended mode, creating it if it doesn't exist with open(file_path, "a" if file_exists else "w") as log_file: log_file.write(log_message_without_color + "\n") @@ -257,7 +256,7 @@ def _log(self, level, key, value, color=None, log_to_file=True, file_path=None, raise FileCreationError(f"Error creating or writing to the log file: {e}") def log_function(self, level, key_or_value, value=None, color=None, log_to_file=True, file_path=None, - file_name=None, max_file_size=None, auto=True, show_time=None,color_enabled=None): + file_name=None, max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a message with exception handling. @@ -282,10 +281,11 @@ def log_function(self, level, key_or_value, value=None, color=None, log_to_file= # If two parameters are provided, consider the first as the key and the second as the value key = key_or_value - self._log(level, key, value, color, log_to_file, file_path, file_name, max_file_size, auto, show_time,color_enabled) + self._log(level, key, value, color, log_to_file, file_path, file_name, max_file_size, auto, show_time, + color_enabled) def info(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a message with the INFO level. @@ -302,10 +302,10 @@ def info(self, key_or_value, value=None, color=None, log_to_file=True, file_path - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("INFO", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def warn(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a message with the WARNING level. @@ -322,10 +322,10 @@ def warn(self, key_or_value, value=None, color=None, log_to_file=True, file_path - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("WARNING", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def error(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a message with the ERROR level. @@ -342,10 +342,10 @@ def error(self, key_or_value, value=None, color=None, log_to_file=True, file_pat - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("ERROR", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def debug(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a message with the DEBUG level. @@ -362,10 +362,10 @@ def debug(self, key_or_value, value=None, color=None, log_to_file=True, file_pat - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("DEBUG", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def critical(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a critical message. @@ -383,10 +383,10 @@ def critical(self, key_or_value, value=None, color=None, log_to_file=True, file_ """ self.log_function("CRITICAL", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def fatal(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a fatal message. @@ -403,10 +403,10 @@ def fatal(self, key_or_value, value=None, color=None, log_to_file=True, file_pat - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("FATAL", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def trace(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log a trace message. @@ -423,10 +423,10 @@ def trace(self, key_or_value, value=None, color=None, log_to_file=True, file_pat - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("TRACE", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) def log(self, key_or_value, value=None, color=None, log_to_file=True, file_path=None, file_name=None, - max_file_size=None, auto=True, show_time=None,color_enabled=None): + max_file_size=None, auto=True, show_time=None, color_enabled=None): """ Log an info message. @@ -443,4 +443,4 @@ def log(self, key_or_value, value=None, color=None, log_to_file=True, file_path= - show_time (bool, optional): Whether to include timestamps in the log message. Defaults to None. """ self.log_function("LOG", key_or_value, value, color, log_to_file, file_path, file_name, max_file_size, auto, - show_time,color_enabled) + show_time, color_enabled) diff --git a/logly/version.py b/logly/version.py index 2338c89..8bbe9b8 100644 --- a/logly/version.py +++ b/logly/version.py @@ -1,7 +1,7 @@ # version.py """ -Logly: A simple logging utility. +Logly: A ready to go logging utility. Copyright (c) 2023 Muhammad Fiaz diff --git a/setup.py b/setup.py index 106bc6b..fe0727d 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,8 @@ from setuptools import setup, find_packages -VERSION = "0.0.5" +VERSION = "0.0.6" -DESCRIPTION = 'Logly: Python logging utility with color-coded messages and file support. Easily log and trace messages with customizable colors. Simple integration for effective debugging and monitoring.' +DESCRIPTION = 'Logly: Ready to Go Python logging utility with color-coded messages, file-based logging, and many more customizable options. Simplify logging in your Python applications with Logly.' with open("README.md", "r", encoding="utf-8") as fh: LONG_DESCRIPTION = fh.read()