logeverything 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- logeverything-0.1.3/LICENSE +21 -0
- logeverything-0.1.3/PKG-INFO +484 -0
- logeverything-0.1.3/README.md +385 -0
- logeverything-0.1.3/benchmarks/_profile_hotpath.py +93 -0
- logeverything-0.1.3/benchmarks/async_logging.py +280 -0
- logeverything-0.1.3/benchmarks/check_baseline.py +263 -0
- logeverything-0.1.3/benchmarks/compare.py +250 -0
- logeverything-0.1.3/benchmarks/context_managers.py +213 -0
- logeverything-0.1.3/benchmarks/core_logging.py +193 -0
- logeverything-0.1.3/benchmarks/decorators.py +259 -0
- logeverything-0.1.3/benchmarks/external_loggers.py +208 -0
- logeverything-0.1.3/benchmarks/optimize.py +435 -0
- logeverything-0.1.3/benchmarks/print_capture.py +242 -0
- logeverything-0.1.3/benchmarks/run_benchmarks.py +131 -0
- logeverything-0.1.3/benchmarks/test_integration.py +148 -0
- logeverything-0.1.3/benchmarks/utils.py +311 -0
- logeverything-0.1.3/benchmarks/visualize.py +532 -0
- logeverything-0.1.3/docs/source/_extensions/__init__.py +1 -0
- logeverything-0.1.3/docs/source/_extensions/executable_code.py +462 -0
- logeverything-0.1.3/docs/source/conf.py +114 -0
- logeverything-0.1.3/examples/01_getting_started/basic_usage.py +185 -0
- logeverything-0.1.3/examples/01_getting_started/cheatsheet.py +259 -0
- logeverything-0.1.3/examples/01_getting_started/logger_creation_methods.py +136 -0
- logeverything-0.1.3/examples/01_getting_started/logger_creation_shared.py +274 -0
- logeverything-0.1.3/examples/01_getting_started/modernized_usage.py +175 -0
- logeverything-0.1.3/examples/01_getting_started/simple_visual_alignment.py +72 -0
- logeverything-0.1.3/examples/01_getting_started/simplified_config_example.py +83 -0
- logeverything-0.1.3/examples/01_getting_started/simplified_imports.py +99 -0
- logeverything-0.1.3/examples/01_getting_started/unified_logger_example.py +361 -0
- logeverything-0.1.3/examples/02_core_features/comprehensive_decorators_example.py +320 -0
- logeverything-0.1.3/examples/02_core_features/custom_handlers_example.py +220 -0
- logeverything-0.1.3/examples/02_core_features/decorator_enhancement_examples.py +287 -0
- logeverything-0.1.3/examples/02_core_features/decorator_imports_example.py +0 -0
- logeverything-0.1.3/examples/02_core_features/decorator_visual_alignment.py +134 -0
- logeverything-0.1.3/examples/02_core_features/hierarchy_fields_example.py +254 -0
- logeverything-0.1.3/examples/02_core_features/logger_hierarchy_example.py +207 -0
- logeverything-0.1.3/examples/02_core_features/print_capture_example.py +90 -0
- logeverything-0.1.3/examples/02_core_features/profiles_demo.py +242 -0
- logeverything-0.1.3/examples/02_core_features/rotation_handlers_example.py +175 -0
- logeverything-0.1.3/examples/02_core_features/smart_decorator_basic.py +86 -0
- logeverything-0.1.3/examples/02_core_features/smart_decorator_example.py +94 -0
- logeverything-0.1.3/examples/02_core_features/visual_formatting_example.py +300 -0
- logeverything-0.1.3/examples/02_core_features/visual_vs_standard_comparison.py +173 -0
- logeverything-0.1.3/examples/03_async_logging/async_context_demo.py +51 -0
- logeverything-0.1.3/examples/03_async_logging/async_context_explanation.py +134 -0
- logeverything-0.1.3/examples/03_async_logging/async_context_test.py +47 -0
- logeverything-0.1.3/examples/03_async_logging/async_log_class_example.py +78 -0
- logeverything-0.1.3/examples/03_async_logging/async_logger_example.py +0 -0
- logeverything-0.1.3/examples/03_async_logging/async_web_app_example.py +445 -0
- logeverything-0.1.3/examples/03_async_logging/high_performance_async_example.py +273 -0
- logeverything-0.1.3/examples/03_async_logging/logger_comparison.py +67 -0
- logeverything-0.1.3/examples/04_async_services/clean_async_services.py +143 -0
- logeverything-0.1.3/examples/04_async_services/minimal_clean_example.py +113 -0
- logeverything-0.1.3/examples/04_async_services/production_grade_example.py +508 -0
- logeverything-0.1.3/examples/04_context_managers/advanced_context_managers_example.py +355 -0
- logeverything-0.1.3/examples/04_context_managers/context_managers_comprehensive.py +327 -0
- logeverything-0.1.3/examples/04_context_managers/context_managers_example.py +193 -0
- logeverything-0.1.3/examples/04_context_managers/django_context_managers.py +391 -0
- logeverything-0.1.3/examples/04_context_managers/fastapi_context_managers.py +424 -0
- logeverything-0.1.3/examples/04_context_managers/pytorch_context_managers.py +796 -0
- logeverything-0.1.3/examples/04_context_managers/sqlalchemy_context_managers.py +393 -0
- logeverything-0.1.3/examples/04_context_managers/tensorflow_context_managers.py +488 -0
- logeverything-0.1.3/examples/05_web_frameworks/django_integration.py +102 -0
- logeverything-0.1.3/examples/05_web_frameworks/fastapi_example.py +129 -0
- logeverything-0.1.3/examples/05_web_frameworks/fastapi_integration.py +144 -0
- logeverything-0.1.3/examples/05_web_frameworks/fastapi_integration_example.py +497 -0
- logeverything-0.1.3/examples/05_web_frameworks/flask_integration_contexts.py +331 -0
- logeverything-0.1.3/examples/06_data_science/data_science_pipeline_example.py +502 -0
- logeverything-0.1.3/examples/06_data_science/datascience_contexts.py +335 -0
- logeverything-0.1.3/examples/06_data_science/datascience_pipeline.py +251 -0
- logeverything-0.1.3/examples/07_integrations/common_loggers_configuration.py +214 -0
- logeverything-0.1.3/examples/07_integrations/external_loggers_example.py +103 -0
- logeverything-0.1.3/examples/07_integrations/integration_demo.py +299 -0
- logeverything-0.1.3/examples/07_integrations/monitoring_integration_example.py +284 -0
- logeverything-0.1.3/examples/08_advanced/base_logger_architecture.py +122 -0
- logeverything-0.1.3/examples/08_advanced/intelligent_type_casting.py +502 -0
- logeverything-0.1.3/examples/08_advanced/intelligent_type_casting_demo.py +291 -0
- logeverything-0.1.3/examples/08_advanced/modernized_usage.py +308 -0
- logeverything-0.1.3/examples/08_advanced/multi_level_visual_alignment.py +181 -0
- logeverything-0.1.3/examples/08_advanced/optional_dependencies_example.py +67 -0
- logeverything-0.1.3/examples/08_advanced/production_logging_architecture.py +734 -0
- logeverything-0.1.3/examples/08_advanced/simple_type_casting_demo.py +164 -0
- logeverything-0.1.3/examples/09_migration/api_migration_guide.py +0 -0
- logeverything-0.1.3/examples/09_migration/fixed_async_services.py +256 -0
- logeverything-0.1.3/logeverything/__init__.py +136 -0
- logeverything-0.1.3/logeverything/__main__.py +5 -0
- logeverything-0.1.3/logeverything/asyncio/__init__.py +70 -0
- logeverything-0.1.3/logeverything/asyncio/async_logger.py +889 -0
- logeverything-0.1.3/logeverything/asyncio/async_logging.py +1133 -0
- logeverything-0.1.3/logeverything/base/__init__.py +10 -0
- logeverything-0.1.3/logeverything/base/base_logger.py +366 -0
- logeverything-0.1.3/logeverything/capture/__init__.py +39 -0
- logeverything-0.1.3/logeverything/capture/print_capture.py +427 -0
- logeverything-0.1.3/logeverything/cli.py +188 -0
- logeverything-0.1.3/logeverything/contexts/__init__.py +55 -0
- logeverything-0.1.3/logeverything/contexts/contexts.py +455 -0
- logeverything-0.1.3/logeverything/core.py +1649 -0
- logeverything-0.1.3/logeverything/correlation.py +142 -0
- logeverything-0.1.3/logeverything/decorators/__init__.py +61 -0
- logeverything-0.1.3/logeverything/decorators/decorators.py +709 -0
- logeverything-0.1.3/logeverything/decorators/smart_decorator.py +155 -0
- logeverything-0.1.3/logeverything/external/__init__.py +47 -0
- logeverything-0.1.3/logeverything/external/external.py +508 -0
- logeverything-0.1.3/logeverything/handlers/__init__.py +33 -0
- logeverything-0.1.3/logeverything/handlers/handlers.py +1491 -0
- logeverything-0.1.3/logeverything/hierarchy.py +46 -0
- logeverything-0.1.3/logeverything/indent_manager.py +575 -0
- logeverything-0.1.3/logeverything/integrations/__init__.py +15 -0
- logeverything-0.1.3/logeverything/integrations/asgi.py +107 -0
- logeverything-0.1.3/logeverything/integrations/celery.py +105 -0
- logeverything-0.1.3/logeverything/integrations/django.py +112 -0
- logeverything-0.1.3/logeverything/integrations/fastapi.py +107 -0
- logeverything-0.1.3/logeverything/integrations/flask.py +124 -0
- logeverything-0.1.3/logeverything/integrations/wsgi.py +79 -0
- logeverything-0.1.3/logeverything/logger.py +844 -0
- logeverything-0.1.3/logeverything/monitoring/__init__.py +59 -0
- logeverything-0.1.3/logeverything/monitoring/api_server.py +365 -0
- logeverything-0.1.3/logeverything/monitoring/core.py +207 -0
- logeverything-0.1.3/logeverything/monitoring/logger.py +279 -0
- logeverything-0.1.3/logeverything/monitoring/metrics.py +348 -0
- logeverything-0.1.3/logeverything/monitoring/storage.py +587 -0
- logeverything-0.1.3/logeverything/profiles/__init__.py +9 -0
- logeverything-0.1.3/logeverything/profiles/profiles.py +237 -0
- logeverything-0.1.3/logeverything/py.typed +0 -0
- logeverything-0.1.3/logeverything/transport/__init__.py +12 -0
- logeverything-0.1.3/logeverything/transport/buffer.py +138 -0
- logeverything-0.1.3/logeverything/transport/http.py +117 -0
- logeverything-0.1.3/logeverything/transport/tcp.py +137 -0
- logeverything-0.1.3/logeverything/transport/udp.py +112 -0
- logeverything-0.1.3/logeverything/utils/__init__.py +37 -0
- logeverything-0.1.3/logeverything/utils/format_utils.py +71 -0
- logeverything-0.1.3/logeverything/utils/levels.py +11 -0
- logeverything-0.1.3/logeverything/utils/monitoring.py +179 -0
- logeverything-0.1.3/logeverything/utils/path_utils.py +72 -0
- logeverything-0.1.3/logeverything/utils/platform_utils.py +52 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/__init__.py +10 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/cli.py +100 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/compile_scss.py +91 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/config.py +191 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/connection_routes.py +110 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/connections.py +122 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/main.py +559 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/models.py +87 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/py.typed +0 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/services.py +1397 -0
- logeverything-0.1.3/logeverything-dashboard/dashboard/templates.py +259 -0
- logeverything-0.1.3/logeverything-dashboard/run_dashboard.py +97 -0
- logeverything-0.1.3/logeverything.egg-info/PKG-INFO +484 -0
- logeverything-0.1.3/logeverything.egg-info/SOURCES.txt +226 -0
- logeverything-0.1.3/logeverything.egg-info/dependency_links.txt +1 -0
- logeverything-0.1.3/logeverything.egg-info/not-zip-safe +1 -0
- logeverything-0.1.3/logeverything.egg-info/requires.txt +80 -0
- logeverything-0.1.3/logeverything.egg-info/top_level.txt +7 -0
- logeverything-0.1.3/pyproject.toml +223 -0
- logeverything-0.1.3/setup.cfg +131 -0
- logeverything-0.1.3/setup.py +4 -0
- logeverything-0.1.3/tests/test_additional_integrations.py +430 -0
- logeverything-0.1.3/tests/test_async_logging.py +164 -0
- logeverything-0.1.3/tests/test_async_logging_enhanced.py +682 -0
- logeverything-0.1.3/tests/test_base_logger.py +253 -0
- logeverything-0.1.3/tests/test_basics.py +435 -0
- logeverything-0.1.3/tests/test_buffer.py +254 -0
- logeverything-0.1.3/tests/test_cli.py +51 -0
- logeverything-0.1.3/tests/test_configuration.py +312 -0
- logeverything-0.1.3/tests/test_contexts.py +283 -0
- logeverything-0.1.3/tests/test_core_enhanced.py +573 -0
- logeverything-0.1.3/tests/test_decorator_integration.py +316 -0
- logeverything-0.1.3/tests/test_decorator_logger_selection.py +510 -0
- logeverything-0.1.3/tests/test_decorators_enhanced.py +467 -0
- logeverything-0.1.3/tests/test_enhanced_visuals.py +442 -0
- logeverything-0.1.3/tests/test_environment_detection.py +47 -0
- logeverything-0.1.3/tests/test_external_loggers.py +664 -0
- logeverything-0.1.3/tests/test_fastapi_integration.py +378 -0
- logeverything-0.1.3/tests/test_handlers.py +286 -0
- logeverything-0.1.3/tests/test_integration_pipeline.py +116 -0
- logeverything-0.1.3/tests/test_intelligent_type_casting.py +498 -0
- logeverything-0.1.3/tests/test_jsonl_formatter.py +189 -0
- logeverything-0.1.3/tests/test_library_integrations.py +523 -0
- logeverything-0.1.3/tests/test_logger_class.py +183 -0
- logeverything-0.1.3/tests/test_logger_deletion_cleanup.py +424 -0
- logeverything-0.1.3/tests/test_mlflow_integration.py +396 -0
- logeverything-0.1.3/tests/test_monitoring_storage.py +703 -0
- logeverything-0.1.3/tests/test_print_capture.py +307 -0
- logeverything-0.1.3/tests/test_profiles.py +131 -0
- logeverything-0.1.3/tests/test_rotation_handlers.py +222 -0
- logeverything-0.1.3/tests/test_simplified_config.py +159 -0
- logeverything-0.1.3/tests/test_smart_decorator.py +836 -0
- logeverything-0.1.3/tests/test_thread_leak_detection.py +230 -0
- logeverything-0.1.3/tests/test_transport_http.py +142 -0
- logeverything-0.1.3/tests/test_transport_tcp.py +126 -0
- logeverything-0.1.3/tests/test_transport_udp.py +84 -0
- logeverything-0.1.3/tests/test_unicode_compatibility.py +326 -0
- logeverything-0.1.3/tests/test_visual_output.py +564 -0
- logeverything-0.1.3/tests/visual/analyze_alignment.py +0 -0
- logeverything-0.1.3/tests/visual/analyze_info_emoji.py +0 -0
- logeverything-0.1.3/tests/visual/clean_output_test.py +59 -0
- logeverything-0.1.3/tests/visual/clean_pipe_test.py +0 -0
- logeverything-0.1.3/tests/visual/compact_hierarchy_demo.py +0 -0
- logeverything-0.1.3/tests/visual/debug_pipes.py +0 -0
- logeverything-0.1.3/tests/visual/enhanced_hierarchy_demo.py +0 -0
- logeverything-0.1.3/tests/visual/enhancement_proposals.py +0 -0
- logeverything-0.1.3/tests/visual/final_alignment_solution.py +104 -0
- logeverything-0.1.3/tests/visual/final_pipe_test.py +0 -0
- logeverything-0.1.3/tests/visual/improved_hierarchy_demo.py +0 -0
- logeverything-0.1.3/tests/visual/interactive_inspector.py +0 -0
- logeverything-0.1.3/tests/visual/investigate_info_emoji.py +0 -0
- logeverything-0.1.3/tests/visual/real_hierarchy_demo.py +0 -0
- logeverything-0.1.3/tests/visual/test_alignment_issue.py +62 -0
- logeverything-0.1.3/tests/visual/test_builtin_pipes.py +0 -0
- logeverything-0.1.3/tests/visual/test_emoji_fixes.py +0 -0
- logeverything-0.1.3/tests/visual/test_emoji_padding.py +0 -0
- logeverything-0.1.3/tests/visual/test_fixed_info_alignment.py +0 -0
- logeverything-0.1.3/tests/visual/test_hierarchical_clean.py +110 -0
- logeverything-0.1.3/tests/visual/test_hierarchy.py +0 -0
- logeverything-0.1.3/tests/visual/test_improved_handlers.py +0 -0
- logeverything-0.1.3/tests/visual/test_monospace_alignment.py +0 -0
- logeverything-0.1.3/tests/visual/test_new_logger.py +49 -0
- logeverything-0.1.3/tests/visual/test_no_emoji_alignment.py +0 -0
- logeverything-0.1.3/tests/visual/test_optimal_tabs.py +0 -0
- logeverything-0.1.3/tests/visual/test_pipe_emoji_approach.py +0 -0
- logeverything-0.1.3/tests/visual/test_real_hierarchical.py +0 -0
- logeverything-0.1.3/tests/visual/test_simple_pipes.py +0 -0
- logeverything-0.1.3/tests/visual/test_tab_formatter.py +0 -0
- logeverything-0.1.3/tests/visual/test_tabs_alignment.py +0 -0
- logeverything-0.1.3/tests/visual/visual_prototypes.py +0 -0
- logeverything-0.1.3/tests/visual/visual_test_suite.py +442 -0
- logeverything-0.1.3/tests/visual/working_hierarchy_demo.py +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 LogEverything Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: logeverything
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: A comprehensive logging library for Python applications with minimal code changes
|
|
5
|
+
Home-page: https://github.com/RamishSiddiqui/logeverything
|
|
6
|
+
Author: Muhammad Ramish Siddiqui
|
|
7
|
+
Author-email: Muhammad Ramish Siddiqui <ramishsiddique46@gmail.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Documentation, https://logeverything.readthedocs.io/
|
|
10
|
+
Project-URL: Source, https://github.com/RamishSiddiqui/logeverything
|
|
11
|
+
Project-URL: Tracker, https://github.com/RamishSiddiqui/logeverything/issues
|
|
12
|
+
Keywords: logging,log,debug,tracing,performance,monitoring,visualization,hierarchical,decorators
|
|
13
|
+
Platform: unix
|
|
14
|
+
Platform: linux
|
|
15
|
+
Platform: osx
|
|
16
|
+
Platform: cygwin
|
|
17
|
+
Platform: win32
|
|
18
|
+
Classifier: Development Status :: 3 - Alpha
|
|
19
|
+
Classifier: Intended Audience :: Developers
|
|
20
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
21
|
+
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
|
+
Classifier: Topic :: System :: Logging
|
|
28
|
+
Requires-Python: >=3.9
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Requires-Dist: colorama>=0.4.4
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
37
|
+
Requires-Dist: ruff>=0.1.6; extra == "dev"
|
|
38
|
+
Requires-Dist: mypy>=0.971; extra == "dev"
|
|
39
|
+
Requires-Dist: bandit>=1.7.0; extra == "dev"
|
|
40
|
+
Requires-Dist: sphinx>=5.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: furo>=2023.5.20; extra == "dev"
|
|
42
|
+
Requires-Dist: sphinx-autodoc-typehints>=1.18.0; extra == "dev"
|
|
43
|
+
Requires-Dist: myst-parser>=2.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: build>=0.8.0; extra == "dev"
|
|
45
|
+
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
46
|
+
Requires-Dist: wheel>=0.38.0; extra == "dev"
|
|
47
|
+
Requires-Dist: pre-commit>=3.3.2; extra == "dev"
|
|
48
|
+
Provides-Extra: test
|
|
49
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == "test"
|
|
52
|
+
Provides-Extra: docs
|
|
53
|
+
Requires-Dist: sphinx>=5.0.0; extra == "docs"
|
|
54
|
+
Requires-Dist: furo>=2023.5.20; extra == "docs"
|
|
55
|
+
Requires-Dist: sphinx-autodoc-typehints>=1.18.0; extra == "docs"
|
|
56
|
+
Requires-Dist: myst-parser>=2.0.0; extra == "docs"
|
|
57
|
+
Provides-Extra: full
|
|
58
|
+
Requires-Dist: rich>=10.0.0; extra == "full"
|
|
59
|
+
Requires-Dist: orjson>=3.5.0; extra == "full"
|
|
60
|
+
Requires-Dist: fastapi>=0.68.0; extra == "full"
|
|
61
|
+
Requires-Dist: requests>=2.25.0; extra == "full"
|
|
62
|
+
Requires-Dist: sqlalchemy>=1.4.0; extra == "full"
|
|
63
|
+
Requires-Dist: pydantic>=1.8.0; extra == "full"
|
|
64
|
+
Requires-Dist: prometheus-client>=0.12.0; extra == "full"
|
|
65
|
+
Requires-Dist: elasticsearch>=7.0.0; extra == "full"
|
|
66
|
+
Requires-Dist: mlflow>=1.0.0; extra == "full"
|
|
67
|
+
Requires-Dist: pillow>=9.0.0; extra == "full"
|
|
68
|
+
Provides-Extra: web
|
|
69
|
+
Requires-Dist: fastapi>=0.68.0; extra == "web"
|
|
70
|
+
Requires-Dist: starlette>=0.14.0; extra == "web"
|
|
71
|
+
Requires-Dist: flask>=2.0.0; extra == "web"
|
|
72
|
+
Requires-Dist: django>=3.2.0; extra == "web"
|
|
73
|
+
Provides-Extra: fastapi
|
|
74
|
+
Requires-Dist: fastapi>=0.68.0; extra == "fastapi"
|
|
75
|
+
Requires-Dist: starlette>=0.14.0; extra == "fastapi"
|
|
76
|
+
Provides-Extra: flask
|
|
77
|
+
Requires-Dist: flask>=2.0.0; extra == "flask"
|
|
78
|
+
Provides-Extra: django
|
|
79
|
+
Requires-Dist: django>=3.2.0; extra == "django"
|
|
80
|
+
Provides-Extra: visual
|
|
81
|
+
Requires-Dist: rich>=10.0.0; extra == "visual"
|
|
82
|
+
Requires-Dist: pillow>=9.0.0; extra == "visual"
|
|
83
|
+
Provides-Extra: json
|
|
84
|
+
Requires-Dist: orjson>=3.5.0; extra == "json"
|
|
85
|
+
Provides-Extra: db
|
|
86
|
+
Requires-Dist: sqlalchemy>=1.4.0; extra == "db"
|
|
87
|
+
Provides-Extra: metrics
|
|
88
|
+
Requires-Dist: prometheus-client>=0.12.0; extra == "metrics"
|
|
89
|
+
Provides-Extra: ml
|
|
90
|
+
Requires-Dist: mlflow>=1.0.0; extra == "ml"
|
|
91
|
+
Requires-Dist: numpy>=1.20.0; extra == "ml"
|
|
92
|
+
Requires-Dist: pandas>=1.3.0; extra == "ml"
|
|
93
|
+
Provides-Extra: cloud
|
|
94
|
+
Requires-Dist: boto3>=1.17.0; extra == "cloud"
|
|
95
|
+
Requires-Dist: google-cloud-logging>=2.0.0; extra == "cloud"
|
|
96
|
+
Requires-Dist: azure-monitor-opentelemetry>=1.0.0; extra == "cloud"
|
|
97
|
+
Dynamic: license-file
|
|
98
|
+
|
|
99
|
+
<p align="center">
|
|
100
|
+
<h1 align="center">LogEverything</h1>
|
|
101
|
+
<p align="center">
|
|
102
|
+
<strong>High-performance Python logging with zero configuration.</strong>
|
|
103
|
+
</p>
|
|
104
|
+
<p align="center">
|
|
105
|
+
<a href="https://pypi.org/project/logeverything/"><img src="https://img.shields.io/pypi/v/logeverything.svg" alt="PyPI"></a>
|
|
106
|
+
<a href="https://pypi.org/project/logeverything/"><img src="https://img.shields.io/pypi/pyversions/logeverything.svg" alt="Python"></a>
|
|
107
|
+
<a href="https://github.com/RamishSiddiqui/logeverything/actions"><img src="https://img.shields.io/github/actions/workflow/status/RamishSiddiqui/logeverything/python-ci.yml?branch=main" alt="Build"></a>
|
|
108
|
+
<a href="https://codecov.io/gh/RamishSiddiqui/logeverything"><img src="https://codecov.io/gh/RamishSiddiqui/logeverything/branch/main/graph/badge.svg" alt="Coverage"></a>
|
|
109
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License"></a>
|
|
110
|
+
<a href="https://pypi.org/project/logeverything/"><img src="https://img.shields.io/pypi/dm/logeverything.svg?label=downloads" alt="Downloads"></a>
|
|
111
|
+
<a href="https://github.com/RamishSiddiqui/logeverything"><img src="https://img.shields.io/github/repo-size/RamishSiddiqui/logeverything?label=code%20size" alt="Code Size"></a>
|
|
112
|
+
<a href="https://github.com/RamishSiddiqui/logeverything/commits/main"><img src="https://img.shields.io/github/last-commit/RamishSiddiqui/logeverything" alt="Last Commit"></a>
|
|
113
|
+
<a href="https://github.com/RamishSiddiqui/logeverything/issues"><img src="https://img.shields.io/github/issues/RamishSiddiqui/logeverything" alt="Issues"></a>
|
|
114
|
+
<a href="https://github.com/RamishSiddiqui/logeverything/stargazers"><img src="https://img.shields.io/github/stars/RamishSiddiqui/logeverything?style=social" alt="Stars"></a>
|
|
115
|
+
</p>
|
|
116
|
+
</p>
|
|
117
|
+
|
|
118
|
+
Add decorators to your functions for automatic, comprehensive logging. LogEverything captures inputs, outputs, execution times, and call hierarchy — with thread safety, async isolation, and beautiful formatting out of the box.
|
|
119
|
+
|
|
120
|
+
<table>
|
|
121
|
+
<tr>
|
|
122
|
+
<td align="center"><strong><h3>10k ops/sec</h3></strong><sub>Core Logging Throughput</sub></td>
|
|
123
|
+
<td align="center"><strong><h3><0.5ms</h3></strong><sub>Decorator Overhead</sub></td>
|
|
124
|
+
<td align="center"><strong><h3>7.9k ops/sec</h3></strong><sub>Print Capture</sub></td>
|
|
125
|
+
<td align="center"><strong><h3>395 tests</h3></strong><sub>65% coverage</sub></td>
|
|
126
|
+
</tr>
|
|
127
|
+
</table>
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Why LogEverything?
|
|
132
|
+
|
|
133
|
+
Most Python logging libraries make you choose: simple but limited (`logging`), fast but
|
|
134
|
+
opinionated (`loguru`), or structured but complex (`structlog`). LogEverything combines
|
|
135
|
+
decorator-based function tracing, native async support, structured JSON output, file
|
|
136
|
+
rotation, and a companion monitoring dashboard — all with zero-config defaults and
|
|
137
|
+
production-grade performance.
|
|
138
|
+
|
|
139
|
+
| Feature | `logging` | `loguru` | `structlog` | **LogEverything** |
|
|
140
|
+
|---|:---:|:---:|:---:|:---:|
|
|
141
|
+
| Zero-config decorators | | | | :white_check_mark: |
|
|
142
|
+
| Hierarchical call tracing | | | | :white_check_mark: |
|
|
143
|
+
| Async-native with task isolation | | | :white_check_mark: | :white_check_mark: |
|
|
144
|
+
| Structured JSON output | | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
|
145
|
+
| File rotation + gzip compression | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
|
|
146
|
+
| Print capture (stdout redirect) | | | | :white_check_mark: |
|
|
147
|
+
| Monitoring dashboard | | | | :white_check_mark: |
|
|
148
|
+
| Configuration profiles | | | | :white_check_mark: |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Install
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
pip install logeverything
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Quick Start
|
|
159
|
+
|
|
160
|
+
### Logger
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
from logeverything import Logger
|
|
164
|
+
|
|
165
|
+
log = Logger("my_app")
|
|
166
|
+
log.info("Application started")
|
|
167
|
+
log.warning("Disk usage high")
|
|
168
|
+
log.error("Connection failed")
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Decorators
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
from logeverything import Logger
|
|
175
|
+
from logeverything.decorators import log
|
|
176
|
+
|
|
177
|
+
app_log = Logger("my_app")
|
|
178
|
+
|
|
179
|
+
@log # auto-detect context
|
|
180
|
+
def process(items):
|
|
181
|
+
return sum(items)
|
|
182
|
+
|
|
183
|
+
@log(using="my_app") # target a specific logger
|
|
184
|
+
def validate(data):
|
|
185
|
+
return len(data) > 0
|
|
186
|
+
|
|
187
|
+
process([1, 2, 3])
|
|
188
|
+
validate("hello")
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Output:**
|
|
192
|
+
```
|
|
193
|
+
-> process(items=[1, 2, 3]) [app.py:7]
|
|
194
|
+
<- process (0.03ms) -> 6
|
|
195
|
+
-> validate(data='hello') [app.py:11]
|
|
196
|
+
<- validate (0.01ms) -> True
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Hierarchical Call Tracing
|
|
200
|
+
|
|
201
|
+
```python
|
|
202
|
+
from logeverything.decorators import log_function
|
|
203
|
+
|
|
204
|
+
@log_function
|
|
205
|
+
def main():
|
|
206
|
+
step1()
|
|
207
|
+
|
|
208
|
+
@log_function
|
|
209
|
+
def step1():
|
|
210
|
+
step2()
|
|
211
|
+
|
|
212
|
+
@log_function
|
|
213
|
+
def step2():
|
|
214
|
+
print("Processing...")
|
|
215
|
+
|
|
216
|
+
main()
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
-> main() [app.py:3]
|
|
221
|
+
| -> step1() [app.py:7]
|
|
222
|
+
| | -> step2() [app.py:11]
|
|
223
|
+
| | | Processing...
|
|
224
|
+
| | <- step2 (0.12ms)
|
|
225
|
+
| <- step1 (0.45ms)
|
|
226
|
+
<- main (1.02ms)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Async
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
from logeverything import AsyncLogger
|
|
233
|
+
import asyncio
|
|
234
|
+
|
|
235
|
+
log = AsyncLogger("worker")
|
|
236
|
+
|
|
237
|
+
async def fetch(url):
|
|
238
|
+
log.info(f"GET {url}")
|
|
239
|
+
await asyncio.sleep(0.1)
|
|
240
|
+
log.info("Done")
|
|
241
|
+
|
|
242
|
+
asyncio.run(fetch("https://api.example.com"))
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Profiles
|
|
246
|
+
|
|
247
|
+
```python
|
|
248
|
+
from logeverything import Logger
|
|
249
|
+
|
|
250
|
+
log = Logger("my_app")
|
|
251
|
+
log.configure(profile="production") # minimal overhead, structured output
|
|
252
|
+
log.configure(profile="development") # rich colors and visual hierarchy
|
|
253
|
+
log.configure(profile="api") # optimized for web services
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### CLI Tool
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
$ logeverything version
|
|
260
|
+
logeverything 0.1.0
|
|
261
|
+
Python 3.11.9
|
|
262
|
+
Platform: Windows-10-10.0.26100-SP0
|
|
263
|
+
|
|
264
|
+
$ logeverything doctor
|
|
265
|
+
logeverything doctor
|
|
266
|
+
[✓] Python 3.11.9
|
|
267
|
+
[✓] psutil 5.9.5
|
|
268
|
+
[✗] celery (not installed)
|
|
269
|
+
[✓] py.typed marker present
|
|
270
|
+
[✗] Dashboard at localhost:8999 (not reachable)
|
|
271
|
+
|
|
272
|
+
$ logeverything init
|
|
273
|
+
Select environment type:
|
|
274
|
+
1) web 2) script 3) notebook
|
|
275
|
+
→ Creates logging_config.py with sensible defaults
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Also available as `python -m logeverything`.
|
|
279
|
+
|
|
280
|
+
### File Rotation
|
|
281
|
+
|
|
282
|
+
```python
|
|
283
|
+
from logeverything.handlers import TimedRotatingFileHandler
|
|
284
|
+
|
|
285
|
+
handler = TimedRotatingFileHandler(
|
|
286
|
+
"logs/app.log",
|
|
287
|
+
when="midnight", # rotate daily at midnight
|
|
288
|
+
retention_days=30, # keep 30 days of logs
|
|
289
|
+
compress=True, # gzip old files
|
|
290
|
+
)
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Size-based rotation with compression is also supported via `FileHandler`:
|
|
294
|
+
|
|
295
|
+
```python
|
|
296
|
+
from logeverything.handlers import FileHandler
|
|
297
|
+
|
|
298
|
+
handler = FileHandler(
|
|
299
|
+
"logs/app.log",
|
|
300
|
+
max_size=10_485_760, # 10 MB
|
|
301
|
+
backup_count=5,
|
|
302
|
+
compress=True, # gzip rotated files
|
|
303
|
+
)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
For dashboard-compatible structured output, attach `JSONLineFormatter` to any handler:
|
|
307
|
+
|
|
308
|
+
```python
|
|
309
|
+
from logeverything.handlers import FileHandler, JSONLineFormatter
|
|
310
|
+
|
|
311
|
+
handler = FileHandler("logs/app.jsonl", max_size=10_485_760, backup_count=5)
|
|
312
|
+
handler.setFormatter(JSONLineFormatter(source="my_service"))
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Architecture
|
|
318
|
+
|
|
319
|
+
```mermaid
|
|
320
|
+
graph TD
|
|
321
|
+
A["Your Code"] -->|"@log decorator"| B["Decorators"]
|
|
322
|
+
B --> C["Logger / AsyncLogger"]
|
|
323
|
+
C --> D["ConsoleHandler"]
|
|
324
|
+
C --> E["FileHandler + Rotation"]
|
|
325
|
+
C --> F["JSONHandler"]
|
|
326
|
+
C --> G["HTTP / TCP / UDP Transport"]
|
|
327
|
+
G --> H["Dashboard"]
|
|
328
|
+
E -->|"JSONL files"| H
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Features
|
|
334
|
+
|
|
335
|
+
<table>
|
|
336
|
+
<tr>
|
|
337
|
+
<td width="50%" valign="top">
|
|
338
|
+
|
|
339
|
+
**Core**
|
|
340
|
+
- Unified `@log` decorator — functions, classes, async
|
|
341
|
+
- Smart logger selection with `using` parameter
|
|
342
|
+
- Auto-discovery and registration of logger instances
|
|
343
|
+
- Structured binding: `log.bind(user_id=123)`
|
|
344
|
+
- Context managers: `log.verbose()`, `log.quiet()`
|
|
345
|
+
|
|
346
|
+
</td>
|
|
347
|
+
<td width="50%" valign="top">
|
|
348
|
+
|
|
349
|
+
**Performance & Safety**
|
|
350
|
+
- 10k ops/sec core logging, 7.9k ops/sec print capture
|
|
351
|
+
- Async-native with 454 ops/sec task-isolated logging
|
|
352
|
+
- Zero overhead when logging is disabled
|
|
353
|
+
- Automatic thread-safe context isolation
|
|
354
|
+
- 395 tests, 65% coverage
|
|
355
|
+
- Cross-platform (Windows, macOS, Linux)
|
|
356
|
+
|
|
357
|
+
</td>
|
|
358
|
+
</tr>
|
|
359
|
+
<tr>
|
|
360
|
+
<td width="50%" valign="top">
|
|
361
|
+
|
|
362
|
+
**Output**
|
|
363
|
+
- Console, file, JSON, and JSONL (`JSONLineFormatter`) handlers
|
|
364
|
+
- Time-based and size-based file rotation with gzip
|
|
365
|
+
- Color themes with Unicode symbols
|
|
366
|
+
- Hierarchical indentation and aligned columns
|
|
367
|
+
- Automatic UTF-8 encoding on Windows
|
|
368
|
+
- 7.9k ops/sec `capture_print()` for stdout
|
|
369
|
+
|
|
370
|
+
</td>
|
|
371
|
+
<td width="50%" valign="top">
|
|
372
|
+
|
|
373
|
+
**Integrations**
|
|
374
|
+
- ASGI/WSGI middleware (FastAPI, Flask, Django)
|
|
375
|
+
- Celery task logging with correlation propagation
|
|
376
|
+
- Correlation IDs across requests and threads
|
|
377
|
+
- Log transports: HTTP, TCP, UDP
|
|
378
|
+
- CLI tool (`logeverything doctor`, `init`)
|
|
379
|
+
- Monitoring API with WebSocket streaming
|
|
380
|
+
|
|
381
|
+
</td>
|
|
382
|
+
</tr>
|
|
383
|
+
</table>
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Monitoring Dashboard
|
|
388
|
+
|
|
389
|
+
A companion web dashboard for exploring logs, operations, and system metrics in real time. The dashboard is **not included** in the base `pip install logeverything` — install it separately using one of the methods below.
|
|
390
|
+
|
|
391
|
+

|
|
392
|
+
|
|
393
|
+
### Install from PyPI
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
pip install logeverything-dashboard
|
|
397
|
+
|
|
398
|
+
# Start the dashboard
|
|
399
|
+
logeverything-dashboard # http://localhost:3001
|
|
400
|
+
|
|
401
|
+
# Point it at your log directory
|
|
402
|
+
logeverything-dashboard --data-dir ./logs
|
|
403
|
+
|
|
404
|
+
# Or connect to a remote LogEverything API
|
|
405
|
+
logeverything-dashboard --api-url http://localhost:8080/api/v1
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Install from Source
|
|
409
|
+
|
|
410
|
+
If you cloned the LogEverything repo, the dashboard is included in the `logeverything-dashboard/` directory:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
cd logeverything-dashboard
|
|
414
|
+
pip install -r requirements.txt
|
|
415
|
+
|
|
416
|
+
# (Optional) Copy and edit the config file
|
|
417
|
+
cp config/settings.example.yaml config/settings.yaml
|
|
418
|
+
|
|
419
|
+
# Start the dashboard
|
|
420
|
+
python run_dashboard.py # http://localhost:3001
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
<table>
|
|
424
|
+
<tr>
|
|
425
|
+
<td width="50%" valign="top">
|
|
426
|
+
|
|
427
|
+
**Pages**
|
|
428
|
+
- **Overview** — summary cards, CPU/memory trends, log distribution, operation analytics
|
|
429
|
+
- **Logs** — filterable table with multi-select level pills, pagination, flat + tree view
|
|
430
|
+
- **Operations** — analytics with failure rates and duration tracking
|
|
431
|
+
- **System** — detailed process/resource metrics, session info
|
|
432
|
+
|
|
433
|
+
</td>
|
|
434
|
+
<td width="50%" valign="top">
|
|
435
|
+
|
|
436
|
+
**Capabilities**
|
|
437
|
+
- Hierarchical tree view with expand/collapse and duration badges
|
|
438
|
+
- Time-range filtering (1h / 6h / 24h / 7d)
|
|
439
|
+
- Full-text log search and correlation ID tracing
|
|
440
|
+
- Dark and light themes
|
|
441
|
+
- Keyboard shortcuts, auto-refresh, JSON export
|
|
442
|
+
- Real-time updates via WebSocket
|
|
443
|
+
|
|
444
|
+
</td>
|
|
445
|
+
</tr>
|
|
446
|
+
</table>
|
|
447
|
+
|
|
448
|
+
[Dashboard Guide](docs/source/user-guide/dashboard.rst) — full documentation with screenshots, API endpoints, and customisation.
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Documentation
|
|
453
|
+
|
|
454
|
+
| | |
|
|
455
|
+
|---|---|
|
|
456
|
+
| [Installation](https://logeverything.readthedocs.io/en/latest/installation.html) | Setup and optional extras |
|
|
457
|
+
| [Quick Start](https://logeverything.readthedocs.io/en/latest/quickstart.html) | First steps with LogEverything |
|
|
458
|
+
| [User Guide](https://logeverything.readthedocs.io/en/latest/user-guide/logger-classes.html) | Logger classes, decorators, profiles, handlers, async, integrations |
|
|
459
|
+
| [Dashboard](https://logeverything.readthedocs.io/en/latest/user-guide/dashboard.html) | Monitoring dashboard setup and usage |
|
|
460
|
+
| [API Reference](https://logeverything.readthedocs.io/en/latest/api/core.html) | Complete module and class reference |
|
|
461
|
+
| [Advanced](https://logeverything.readthedocs.io/en/latest/advanced/performance.html) | Performance tuning and production deployment |
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
## Contributing
|
|
466
|
+
|
|
467
|
+
Contributions welcome. See the [Contributing Guide](https://logeverything.readthedocs.io/en/latest/contributing.html).
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
pip install -e ".[dev]"
|
|
471
|
+
logeverything doctor # check environment and optional deps
|
|
472
|
+
make test # run tests with coverage
|
|
473
|
+
make lint # flake8, black, isort, mypy, bandit
|
|
474
|
+
make format # auto-format
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
## License
|
|
478
|
+
|
|
479
|
+
MIT License. See [LICENSE](LICENSE) for details.
|
|
480
|
+
|
|
481
|
+
<p align="center"><sub>Built for developers who believe every function call tells a story.</sub></p>
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|