django-activity-audit 1.3.0.dev12__tar.gz → 1.3.0.dev13__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.
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/PKG-INFO +1 -1
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/__init__.py +6 -2
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/constants.py +11 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/formatters.py +5 -6
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/handlers.py +3 -3
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/utils.py +13 -2
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/pyproject.toml +1 -1
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/.gitignore +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/.pre-commit-config.yaml +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/LICENSE +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/MANIFEST.in +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/README.md +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/README.rst +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/REVIEW.md +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/apps.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/logger_levels.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/middleware.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/protocols.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/settings.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/signals.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/unregistered.py +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/docs/django-activity-audit.md +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/docs/user-activity-feed-plan.md +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/hatch +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/pytest.ini +0 -0
- {django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-activity-audit
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev13
|
|
4
4
|
Summary: A Django package for easy CRUD operation logging and container logs
|
|
5
5
|
Project-URL: Homepage, https://github.com/shree256/django-activity-audit
|
|
6
6
|
Project-URL: Repository, https://github.com/shree256/django-activity-audit
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/__init__.py
RENAMED
|
@@ -8,7 +8,9 @@ from activity_audit.utils import (
|
|
|
8
8
|
get_async_login_handler,
|
|
9
9
|
get_audit_handler,
|
|
10
10
|
get_console_formatter,
|
|
11
|
-
|
|
11
|
+
get_app_formatter,
|
|
12
|
+
get_api_formatter,
|
|
13
|
+
get_audit_formatter,
|
|
12
14
|
get_json_handler,
|
|
13
15
|
get_login_handler,
|
|
14
16
|
)
|
|
@@ -17,7 +19,9 @@ from . import logger_levels
|
|
|
17
19
|
|
|
18
20
|
__all__ = [
|
|
19
21
|
"get_console_formatter",
|
|
20
|
-
"
|
|
22
|
+
"get_app_formatter",
|
|
23
|
+
"get_api_formatter",
|
|
24
|
+
"get_audit_formatter",
|
|
21
25
|
"get_json_handler",
|
|
22
26
|
"get_api_handler",
|
|
23
27
|
"get_audit_handler",
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/constants.py
RENAMED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class LogType(str, enum.Enum):
|
|
5
|
+
APP = "app"
|
|
6
|
+
API = "api"
|
|
7
|
+
AUDIT = "audit"
|
|
8
|
+
LOGIN = "login"
|
|
9
|
+
|
|
10
|
+
|
|
1
11
|
CONSOLE_FORMAT = (
|
|
2
12
|
"%(levelname)s %(asctime)s %(pathname)s %(module)s %(funcName)s %(message)s"
|
|
3
13
|
)
|
|
@@ -6,3 +16,4 @@ REQUEST_TYPES = [
|
|
|
6
16
|
"internal",
|
|
7
17
|
"external",
|
|
8
18
|
]
|
|
19
|
+
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/formatters.py
RENAMED
|
@@ -4,6 +4,7 @@ import json
|
|
|
4
4
|
import logging
|
|
5
5
|
import uuid
|
|
6
6
|
|
|
7
|
+
from .constants import LogType
|
|
7
8
|
|
|
8
9
|
def _json_default(obj):
|
|
9
10
|
"""
|
|
@@ -29,7 +30,7 @@ def _json_default(obj):
|
|
|
29
30
|
return str(obj)
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
class
|
|
33
|
+
class AppFormatter(logging.Formatter):
|
|
33
34
|
def __init__(self, timestamp_format: str = "%Y-%m-%d %H:%M:%S.%f"):
|
|
34
35
|
super().__init__()
|
|
35
36
|
self.timestamp_format = timestamp_format
|
|
@@ -50,17 +51,13 @@ class JsonFormatter(logging.Formatter):
|
|
|
50
51
|
"request_id": getattr(record, "request_id", "") or "",
|
|
51
52
|
"message": record.getMessage(),
|
|
52
53
|
"exception": "",
|
|
53
|
-
|
|
54
|
+
"log_type": LogType.APP,
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
# Add exception info if present for ERROR
|
|
57
58
|
if record.exc_info:
|
|
58
59
|
log_data["exception"] = "{}".format(self.formatException(record.exc_info))
|
|
59
60
|
|
|
60
|
-
# Add extra fields if present
|
|
61
|
-
# if hasattr(record, "extra"):
|
|
62
|
-
# log_data.update(record.extra)
|
|
63
|
-
|
|
64
61
|
return json.dumps(log_data, default=_json_default)
|
|
65
62
|
|
|
66
63
|
|
|
@@ -80,6 +77,7 @@ class APIFormatter(logging.Formatter):
|
|
|
80
77
|
"level": record.levelname,
|
|
81
78
|
"name": record.name,
|
|
82
79
|
"message": record.getMessage(),
|
|
80
|
+
"log_type": LogType.API,
|
|
83
81
|
}
|
|
84
82
|
|
|
85
83
|
# Add all audit-specific fields if they exist
|
|
@@ -114,6 +112,7 @@ class AuditFormatter(logging.Formatter):
|
|
|
114
112
|
"level": record.levelname,
|
|
115
113
|
"name": record.name,
|
|
116
114
|
"message": record.getMessage(),
|
|
115
|
+
"log_type": LogType.AUDIT,
|
|
117
116
|
}
|
|
118
117
|
|
|
119
118
|
audit_fields = [
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/handlers.py
RENAMED
|
@@ -3,7 +3,7 @@ import queue
|
|
|
3
3
|
|
|
4
4
|
from logging.handlers import QueueHandler, QueueListener, RotatingFileHandler
|
|
5
5
|
|
|
6
|
-
from .formatters import APIFormatter, AuditFormatter,
|
|
6
|
+
from .formatters import APIFormatter, AuditFormatter, AppFormatter, LoginFormatter
|
|
7
7
|
from .middleware import get_request_id
|
|
8
8
|
|
|
9
9
|
|
|
@@ -145,7 +145,7 @@ class AsyncLoginLogHandler(AsyncBaseAuditHandler):
|
|
|
145
145
|
class AsyncJsonHandler(QueueHandler):
|
|
146
146
|
"""
|
|
147
147
|
Non-blocking handler for general JSON logs. Wraps a RotatingFileHandler
|
|
148
|
-
with
|
|
148
|
+
with AppFormatter on the background thread.
|
|
149
149
|
"""
|
|
150
150
|
|
|
151
151
|
def __init__(
|
|
@@ -163,7 +163,7 @@ class AsyncJsonHandler(QueueHandler):
|
|
|
163
163
|
sync_handler = RotatingFileHandler(
|
|
164
164
|
filename, mode, maxBytes, backupCount, encoding, delay
|
|
165
165
|
)
|
|
166
|
-
sync_handler.setFormatter(
|
|
166
|
+
sync_handler.setFormatter(AppFormatter())
|
|
167
167
|
self._listener = QueueListener(
|
|
168
168
|
log_queue, sync_handler, respect_handler_level=True
|
|
169
169
|
)
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/utils.py
RENAMED
|
@@ -7,9 +7,19 @@ def get_console_formatter() -> dict:
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def
|
|
10
|
+
def get_app_formatter() -> dict:
|
|
11
11
|
return {
|
|
12
|
-
"()": "activity_audit.formatters.
|
|
12
|
+
"()": "activity_audit.formatters.AppFormatter",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
def get_api_formatter() -> dict:
|
|
16
|
+
return {
|
|
17
|
+
"()": "activity_audit.formatters.APIFormatter"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
def get_audit_formatter() -> dict:
|
|
21
|
+
return {
|
|
22
|
+
"()": "activity_audit.formatters.AuditFormatter"
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
|
|
@@ -30,6 +40,7 @@ def get_json_handler(
|
|
|
30
40
|
}
|
|
31
41
|
|
|
32
42
|
|
|
43
|
+
|
|
33
44
|
def get_api_handler(
|
|
34
45
|
filename: str = "audit_logs/api.log",
|
|
35
46
|
) -> dict:
|
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/REVIEW.md
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/middleware.py
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/protocols.py
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/settings.py
RENAMED
|
File without changes
|
{django_activity_audit-1.3.0.dev12 → django_activity_audit-1.3.0.dev13}/activity_audit/signals.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|