feat: added util logger OS (#841)

<!-- .github/pull_request_template.md -->

## Description
<!-- Provide a clear description of the changes in this PR -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.

---------

Co-authored-by: Igor Ilic <igorilic03@gmail.com>
Co-authored-by: Igor Ilic <30923996+dexters1@users.noreply.github.com>
This commit is contained in:
Vasilije 2025-05-20 20:25:49 +02:00 committed by GitHub
parent 9d9ea63236
commit 4c52ef62aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 53 additions and 2 deletions

View file

@ -1,3 +1,9 @@
from cognee.version import get_cognee_version
# NOTE: __version__ extraction must be at the top of the __init__.py otherwise
# there will be circular import issues
__version__ = get_cognee_version()
from .api.v1.add import add
from .api.v1.delete import delete
from .api.v1.cognify import cognify

View file

@ -4,8 +4,12 @@ import threading
import logging
import structlog
import traceback
import platform
from datetime import datetime
from pathlib import Path
import importlib.metadata
from cognee import __version__ as cognee_version
# Export common log levels
DEBUG = logging.DEBUG
@ -36,6 +40,13 @@ LOGS_DIR.mkdir(exist_ok=True) # Create logs dir if it doesn't exist
# Maximum number of log files to keep
MAX_LOG_FILES = 10
# Version information
PYTHON_VERSION = platform.python_version()
STRUCTLOG_VERSION = structlog.__version__
COGNEE_VERSION = cognee_version
OS_INFO = f"{platform.system()} {platform.release()} ({platform.version()})"
class PlainFileHandler(logging.FileHandler):
"""A custom file handler that writes simpler plain text log entries."""
@ -326,8 +337,18 @@ def setup_logging(log_level=None, name=None):
# Clean up old log files, keeping only the most recent ones
cleanup_old_logs(LOGS_DIR, MAX_LOG_FILES)
# Return a configured logger
return structlog.get_logger(name if name else __name__)
# Get a configured logger and log system information
logger = structlog.get_logger(name if name else __name__)
logger.info(
"Logging initialized",
python_version=PYTHON_VERSION,
structlog_version=STRUCTLOG_VERSION,
cognee_version=COGNEE_VERSION,
os_info=OS_INFO,
)
# Return the configured logger
return logger
def get_log_file_location():

24
cognee/version.py Normal file
View file

@ -0,0 +1,24 @@
import os
from contextlib import suppress
import importlib.metadata
from pathlib import Path
def get_cognee_version() -> str:
"""Returns either the version of installed cognee package or the one
found in nearby pyproject.toml"""
with suppress(FileNotFoundError, StopIteration):
with open(
os.path.join(Path(__file__).parent.parent, "pyproject.toml"), encoding="utf-8"
) as pyproject_toml:
version = (
next(line for line in pyproject_toml if line.startswith("version"))
.split("=")[1]
.strip("'\"\n ")
)
# Mark the version as a local Cognee library by appending “-dev”
return f"{version}-dev"
try:
return importlib.metadata.version("cognee")
except importlib.metadata.PackageNotFoundError:
return "unknown"