beans-logging 7.0.0__tar.gz → 8.0.0__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.
- {beans_logging-7.0.0/src/beans_logging.egg-info → beans_logging-8.0.0}/PKG-INFO +23 -56
- {beans_logging-7.0.0 → beans_logging-8.0.0}/README.md +19 -54
- {beans_logging-7.0.0 → beans_logging-8.0.0}/pyproject.toml +0 -5
- {beans_logging-7.0.0 → beans_logging-8.0.0}/requirements/requirements.docs.txt +1 -0
- beans_logging-8.0.0/requirements/requirements.fastapi.txt +1 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/__init__.py +5 -1
- beans_logging-8.0.0/src/beans_logging/__version__.py +1 -0
- beans_logging-8.0.0/src/beans_logging/_builder.py +132 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/_core.py +8 -7
- beans_logging-8.0.0/src/beans_logging/config.py +192 -0
- beans_logging-8.0.0/src/beans_logging/constants.py +46 -0
- beans_logging-7.0.0/src/beans_logging/_intercept.py → beans_logging-8.0.0/src/beans_logging/intercepters.py +2 -2
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/schemas.py +2 -6
- {beans_logging-7.0.0 → beans_logging-8.0.0/src/beans_logging.egg-info}/PKG-INFO +23 -56
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging.egg-info/SOURCES.txt +2 -2
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging.egg-info/requires.txt +3 -1
- beans_logging-7.0.0/requirements/requirements.fastapi.txt +0 -1
- beans_logging-7.0.0/src/beans_logging/__version__.py +0 -1
- beans_logging-7.0.0/src/beans_logging/_builder.py +0 -154
- beans_logging-7.0.0/src/beans_logging/_constants.py +0 -30
- beans_logging-7.0.0/src/beans_logging/config.py +0 -186
- {beans_logging-7.0.0 → beans_logging-8.0.0}/.python-version +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/LICENSE.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/requirements/requirements.build.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/requirements/requirements.dev.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/requirements/requirements.test.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/requirements.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/setup.cfg +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/setup.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/auto.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/filters.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/formats.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/rotators.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging/sinks.py +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging.egg-info/dependency_links.txt +0 -0
- {beans_logging-7.0.0 → beans_logging-8.0.0}/src/beans_logging.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: beans_logging
|
|
3
|
-
Version:
|
|
3
|
+
Version: 8.0.0
|
|
4
4
|
Summary: 'beans-logging' is a python package for simple logger and easily managing logs.
|
|
5
5
|
Author-email: Batkhuu Byambajav <batkhuu10@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/bybatkhuu/module-python-logging
|
|
@@ -25,7 +25,7 @@ Requires-Dist: pydantic[timezone]<3.0.0,>=2.5.3
|
|
|
25
25
|
Requires-Dist: loguru<1.0.0,>=0.7.3
|
|
26
26
|
Requires-Dist: potato_util<1.0.0,>=0.2.0
|
|
27
27
|
Provides-Extra: fastapi
|
|
28
|
-
Requires-Dist: beans-logging-fastapi<
|
|
28
|
+
Requires-Dist: beans-logging-fastapi<3.0.0,>=1.0.0; extra == "fastapi"
|
|
29
29
|
Provides-Extra: test
|
|
30
30
|
Requires-Dist: pytest<10.0.0,>=8.0.2; extra == "test"
|
|
31
31
|
Requires-Dist: pytest-cov<8.0.0,>=5.0.0; extra == "test"
|
|
@@ -38,6 +38,7 @@ Requires-Dist: build<2.0.0,>=1.1.1; extra == "build"
|
|
|
38
38
|
Requires-Dist: twine<7.0.0,>=6.0.1; extra == "build"
|
|
39
39
|
Provides-Extra: docs
|
|
40
40
|
Requires-Dist: pylint<5.0.0,>=3.0.4; extra == "docs"
|
|
41
|
+
Requires-Dist: click<8.2.2,>=8.0.0; extra == "docs"
|
|
41
42
|
Requires-Dist: mkdocs-material<10.0.0,>=9.5.50; extra == "docs"
|
|
42
43
|
Requires-Dist: mkdocs-awesome-nav<4.0.0,>=3.0.0; extra == "docs"
|
|
43
44
|
Requires-Dist: mkdocstrings[python]<2.0.0,>=0.24.3; extra == "docs"
|
|
@@ -52,6 +53,7 @@ Requires-Dist: wheel<1.0.0,>=0.43.0; extra == "dev"
|
|
|
52
53
|
Requires-Dist: build<2.0.0,>=1.1.1; extra == "dev"
|
|
53
54
|
Requires-Dist: twine<7.0.0,>=6.0.1; extra == "dev"
|
|
54
55
|
Requires-Dist: pylint<5.0.0,>=3.0.4; extra == "dev"
|
|
56
|
+
Requires-Dist: click<8.2.2,>=8.0.0; extra == "dev"
|
|
55
57
|
Requires-Dist: mkdocs-material<10.0.0,>=9.5.50; extra == "dev"
|
|
56
58
|
Requires-Dist: mkdocs-awesome-nav<4.0.0,>=3.0.0; extra == "dev"
|
|
57
59
|
Requires-Dist: mkdocstrings[python]<2.0.0,>=0.24.3; extra == "dev"
|
|
@@ -102,42 +104,7 @@ It is a `Loguru` based custom logging package for python projects.
|
|
|
102
104
|
- Install [**git**](https://git-scm.com/downloads)
|
|
103
105
|
- Setup an [**SSH key**](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh)
|
|
104
106
|
|
|
105
|
-
### 2.
|
|
106
|
-
|
|
107
|
-
[TIP] Skip this step, if you're going to install the package directly from **PyPi** or **GitHub** repository.
|
|
108
|
-
|
|
109
|
-
**2.1.** Prepare projects directory (if not exists):
|
|
110
|
-
|
|
111
|
-
```sh
|
|
112
|
-
# Create projects directory:
|
|
113
|
-
mkdir -pv ~/workspaces/projects
|
|
114
|
-
|
|
115
|
-
# Enter into projects directory:
|
|
116
|
-
cd ~/workspaces/projects
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**2.2.** Follow one of the below options **[A]**, **[B]** or **[C]**:
|
|
120
|
-
|
|
121
|
-
**OPTION A.** Clone the repository:
|
|
122
|
-
|
|
123
|
-
```sh
|
|
124
|
-
git clone https://github.com/bybatkhuu/module-python-logging.git && \
|
|
125
|
-
cd module-python-logging
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**OPTION B.** Clone the repository (for **DEVELOPMENT**: git + ssh key):
|
|
129
|
-
|
|
130
|
-
```sh
|
|
131
|
-
git clone git@github.com:bybatkhuu/module-python-logging.git && \
|
|
132
|
-
cd module-python-logging
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
**OPTION C.** Download source code:
|
|
136
|
-
|
|
137
|
-
1. Download archived **zip** file from [**releases**](https://github.com/bybatkhuu/module-python-logging/releases).
|
|
138
|
-
2. Extract it into the projects directory.
|
|
139
|
-
|
|
140
|
-
### 3. 📦 Install the package
|
|
107
|
+
### 2. 📦 Install the package
|
|
141
108
|
|
|
142
109
|
[NOTE] Choose one of the following methods to install the package **[A ~ F]**:
|
|
143
110
|
|
|
@@ -156,6 +123,9 @@ pip install git+https://github.com/bybatkhuu/module-python-logging.git
|
|
|
156
123
|
**OPTION C.** Install from the downloaded **source code**:
|
|
157
124
|
|
|
158
125
|
```sh
|
|
126
|
+
git clone https://github.com/bybatkhuu/module-python-logging.git && \
|
|
127
|
+
cd ./module-python-logging
|
|
128
|
+
|
|
159
129
|
# Install directly from the source code:
|
|
160
130
|
pip install .
|
|
161
131
|
|
|
@@ -323,9 +293,6 @@ logger:
|
|
|
323
293
|
level:
|
|
324
294
|
base: INFO
|
|
325
295
|
err: WARNING
|
|
326
|
-
std:
|
|
327
|
-
format_str: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{extra[level_short]:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
|
|
328
|
-
colorize: true
|
|
329
296
|
format_str: "[{time:YYYY-MM-DD HH:mm:ss.SSS Z} | {extra[level_short]:<5} | {name}:{line}]: {message}"
|
|
330
297
|
file:
|
|
331
298
|
logs_dir: "./logs"
|
|
@@ -333,12 +300,6 @@ logger:
|
|
|
333
300
|
rotate_time: "00:00:00"
|
|
334
301
|
retention: 90
|
|
335
302
|
encoding: utf8
|
|
336
|
-
plain:
|
|
337
|
-
log_path: "{app_name}.all.log"
|
|
338
|
-
err_path: "{app_name}.err.log"
|
|
339
|
-
json:
|
|
340
|
-
log_path: "json/{app_name}.json.all.log"
|
|
341
|
-
err_path: "json/{app_name}.json.err.log"
|
|
342
303
|
custom_serialize: false
|
|
343
304
|
intercept:
|
|
344
305
|
enabled: true
|
|
@@ -348,24 +309,30 @@ logger:
|
|
|
348
309
|
mute_modules: []
|
|
349
310
|
handlers:
|
|
350
311
|
default.all.std_handler:
|
|
351
|
-
type: STD
|
|
352
312
|
enabled: true
|
|
313
|
+
h_type: STD
|
|
314
|
+
format: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{extra[level_short]:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
|
|
315
|
+
colorize: true
|
|
353
316
|
default.all.file_handler:
|
|
354
|
-
type: FILE
|
|
355
317
|
enabled: false
|
|
318
|
+
h_type: FILE
|
|
319
|
+
sink: "{app_name}.all.log"
|
|
356
320
|
default.err.file_handler:
|
|
357
|
-
type: FILE
|
|
358
|
-
error: true
|
|
359
321
|
enabled: false
|
|
322
|
+
h_type: FILE
|
|
323
|
+
sink: "{app_name}.err.log"
|
|
324
|
+
error: true
|
|
360
325
|
default.all.json_handler:
|
|
361
|
-
type: FILE
|
|
362
|
-
serialize: true
|
|
363
326
|
enabled: false
|
|
327
|
+
h_type: FILE
|
|
328
|
+
sink: "json/{app_name}.all.json.log"
|
|
329
|
+
serialize: true
|
|
364
330
|
default.err.json_handler:
|
|
365
|
-
|
|
331
|
+
enabled: false
|
|
332
|
+
h_type: FILE
|
|
333
|
+
sink: "json/{app_name}.err.json.log"
|
|
366
334
|
serialize: true
|
|
367
335
|
error: true
|
|
368
|
-
enabled: false
|
|
369
336
|
extra:
|
|
370
337
|
```
|
|
371
338
|
|
|
@@ -418,7 +385,7 @@ To build the documentation, run the following command:
|
|
|
418
385
|
pip install -r ./requirements/requirements.docs.txt
|
|
419
386
|
|
|
420
387
|
# Serve documentation locally (for development):
|
|
421
|
-
mkdocs serve -a 0.0.0.0:8000
|
|
388
|
+
mkdocs serve -a 0.0.0.0:8000 --livereload
|
|
422
389
|
# Or use the docs script:
|
|
423
390
|
./scripts/docs.sh
|
|
424
391
|
|
|
@@ -40,42 +40,7 @@ It is a `Loguru` based custom logging package for python projects.
|
|
|
40
40
|
- Install [**git**](https://git-scm.com/downloads)
|
|
41
41
|
- Setup an [**SSH key**](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh)
|
|
42
42
|
|
|
43
|
-
### 2.
|
|
44
|
-
|
|
45
|
-
[TIP] Skip this step, if you're going to install the package directly from **PyPi** or **GitHub** repository.
|
|
46
|
-
|
|
47
|
-
**2.1.** Prepare projects directory (if not exists):
|
|
48
|
-
|
|
49
|
-
```sh
|
|
50
|
-
# Create projects directory:
|
|
51
|
-
mkdir -pv ~/workspaces/projects
|
|
52
|
-
|
|
53
|
-
# Enter into projects directory:
|
|
54
|
-
cd ~/workspaces/projects
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**2.2.** Follow one of the below options **[A]**, **[B]** or **[C]**:
|
|
58
|
-
|
|
59
|
-
**OPTION A.** Clone the repository:
|
|
60
|
-
|
|
61
|
-
```sh
|
|
62
|
-
git clone https://github.com/bybatkhuu/module-python-logging.git && \
|
|
63
|
-
cd module-python-logging
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**OPTION B.** Clone the repository (for **DEVELOPMENT**: git + ssh key):
|
|
67
|
-
|
|
68
|
-
```sh
|
|
69
|
-
git clone git@github.com:bybatkhuu/module-python-logging.git && \
|
|
70
|
-
cd module-python-logging
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**OPTION C.** Download source code:
|
|
74
|
-
|
|
75
|
-
1. Download archived **zip** file from [**releases**](https://github.com/bybatkhuu/module-python-logging/releases).
|
|
76
|
-
2. Extract it into the projects directory.
|
|
77
|
-
|
|
78
|
-
### 3. 📦 Install the package
|
|
43
|
+
### 2. 📦 Install the package
|
|
79
44
|
|
|
80
45
|
[NOTE] Choose one of the following methods to install the package **[A ~ F]**:
|
|
81
46
|
|
|
@@ -94,6 +59,9 @@ pip install git+https://github.com/bybatkhuu/module-python-logging.git
|
|
|
94
59
|
**OPTION C.** Install from the downloaded **source code**:
|
|
95
60
|
|
|
96
61
|
```sh
|
|
62
|
+
git clone https://github.com/bybatkhuu/module-python-logging.git && \
|
|
63
|
+
cd ./module-python-logging
|
|
64
|
+
|
|
97
65
|
# Install directly from the source code:
|
|
98
66
|
pip install .
|
|
99
67
|
|
|
@@ -261,9 +229,6 @@ logger:
|
|
|
261
229
|
level:
|
|
262
230
|
base: INFO
|
|
263
231
|
err: WARNING
|
|
264
|
-
std:
|
|
265
|
-
format_str: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{extra[level_short]:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
|
|
266
|
-
colorize: true
|
|
267
232
|
format_str: "[{time:YYYY-MM-DD HH:mm:ss.SSS Z} | {extra[level_short]:<5} | {name}:{line}]: {message}"
|
|
268
233
|
file:
|
|
269
234
|
logs_dir: "./logs"
|
|
@@ -271,12 +236,6 @@ logger:
|
|
|
271
236
|
rotate_time: "00:00:00"
|
|
272
237
|
retention: 90
|
|
273
238
|
encoding: utf8
|
|
274
|
-
plain:
|
|
275
|
-
log_path: "{app_name}.all.log"
|
|
276
|
-
err_path: "{app_name}.err.log"
|
|
277
|
-
json:
|
|
278
|
-
log_path: "json/{app_name}.json.all.log"
|
|
279
|
-
err_path: "json/{app_name}.json.err.log"
|
|
280
239
|
custom_serialize: false
|
|
281
240
|
intercept:
|
|
282
241
|
enabled: true
|
|
@@ -286,24 +245,30 @@ logger:
|
|
|
286
245
|
mute_modules: []
|
|
287
246
|
handlers:
|
|
288
247
|
default.all.std_handler:
|
|
289
|
-
type: STD
|
|
290
248
|
enabled: true
|
|
249
|
+
h_type: STD
|
|
250
|
+
format: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{extra[level_short]:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
|
|
251
|
+
colorize: true
|
|
291
252
|
default.all.file_handler:
|
|
292
|
-
type: FILE
|
|
293
253
|
enabled: false
|
|
254
|
+
h_type: FILE
|
|
255
|
+
sink: "{app_name}.all.log"
|
|
294
256
|
default.err.file_handler:
|
|
295
|
-
type: FILE
|
|
296
|
-
error: true
|
|
297
257
|
enabled: false
|
|
258
|
+
h_type: FILE
|
|
259
|
+
sink: "{app_name}.err.log"
|
|
260
|
+
error: true
|
|
298
261
|
default.all.json_handler:
|
|
299
|
-
type: FILE
|
|
300
|
-
serialize: true
|
|
301
262
|
enabled: false
|
|
263
|
+
h_type: FILE
|
|
264
|
+
sink: "json/{app_name}.all.json.log"
|
|
265
|
+
serialize: true
|
|
302
266
|
default.err.json_handler:
|
|
303
|
-
|
|
267
|
+
enabled: false
|
|
268
|
+
h_type: FILE
|
|
269
|
+
sink: "json/{app_name}.err.json.log"
|
|
304
270
|
serialize: true
|
|
305
271
|
error: true
|
|
306
|
-
enabled: false
|
|
307
272
|
extra:
|
|
308
273
|
```
|
|
309
274
|
|
|
@@ -356,7 +321,7 @@ To build the documentation, run the following command:
|
|
|
356
321
|
pip install -r ./requirements/requirements.docs.txt
|
|
357
322
|
|
|
358
323
|
# Serve documentation locally (for development):
|
|
359
|
-
mkdocs serve -a 0.0.0.0:8000
|
|
324
|
+
mkdocs serve -a 0.0.0.0:8000 --livereload
|
|
360
325
|
# Or use the docs script:
|
|
361
326
|
./scripts/docs.sh
|
|
362
327
|
|
|
@@ -31,11 +31,6 @@ classifiers = [
|
|
|
31
31
|
]
|
|
32
32
|
dynamic = ["version", "dependencies", "optional-dependencies"]
|
|
33
33
|
|
|
34
|
-
# [tool.setuptools.packages.find]
|
|
35
|
-
# where = ["src"]
|
|
36
|
-
# include = ["beans_logging*"]
|
|
37
|
-
# namespaces = false
|
|
38
|
-
|
|
39
34
|
[tool.setuptools.dynamic]
|
|
40
35
|
version = { attr = "beans_logging.__version__.__version__" }
|
|
41
36
|
dependencies = { file = "./requirements.txt" }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
beans-logging-fastapi>=1.0.0,<3.0.0
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from .__version__ import __version__
|
|
4
|
-
from .
|
|
4
|
+
from .schemas import LoguruHandlerPM, LogHandlerPM
|
|
5
|
+
from .config import get_default_handlers, LoggerConfigPM
|
|
5
6
|
from ._core import Logger, logger, LoggerLoader
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
__all__ = [
|
|
9
10
|
"__version__",
|
|
11
|
+
"LoguruHandlerPM",
|
|
12
|
+
"LogHandlerPM",
|
|
13
|
+
"get_default_handlers",
|
|
10
14
|
"LoggerConfigPM",
|
|
11
15
|
"Logger",
|
|
12
16
|
"logger",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "8.0.0"
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Any
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from pydantic import validate_call
|
|
6
|
+
|
|
7
|
+
from .constants import LogHandlerTypeEnum, LogLevelEnum
|
|
8
|
+
from .schemas import LogHandlerPM
|
|
9
|
+
from .config import LoggerConfigPM
|
|
10
|
+
from .sinks import std_sink
|
|
11
|
+
from .formats import json_formatter
|
|
12
|
+
from .filters import (
|
|
13
|
+
use_all_filter,
|
|
14
|
+
use_std_filter,
|
|
15
|
+
use_file_filter,
|
|
16
|
+
use_file_err_filter,
|
|
17
|
+
use_file_json_filter,
|
|
18
|
+
use_file_json_err_filter,
|
|
19
|
+
)
|
|
20
|
+
from .rotators import Rotator
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@validate_call
|
|
24
|
+
def build_handler(handler: LogHandlerPM, config: LoggerConfigPM) -> dict[str, Any]:
|
|
25
|
+
"""Build handler config as dictionary for Loguru logger to add new handler.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
handler (LogHandlerPM , required): Target log handler model.
|
|
29
|
+
config (LoggerConfigPM, required): Default main config model to fill missing values.
|
|
30
|
+
|
|
31
|
+
Raises:
|
|
32
|
+
ValueError: 'sink' attribute is empty, required for any log handler except std and file handlers!
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
dict[str, Any]: Loguru handler config as dictionary.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
if handler.sink is None:
|
|
39
|
+
if handler.h_type == LogHandlerTypeEnum.STD:
|
|
40
|
+
handler.sink = std_sink
|
|
41
|
+
else:
|
|
42
|
+
raise ValueError(
|
|
43
|
+
"'sink' attribute is empty, required for any log handler except std handler!"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
_sink = handler.sink
|
|
47
|
+
if isinstance(_sink, (str, Path)):
|
|
48
|
+
if not os.path.isabs(_sink):
|
|
49
|
+
_sink = os.path.join(config.default.file.logs_dir, _sink)
|
|
50
|
+
|
|
51
|
+
if isinstance(_sink, Path):
|
|
52
|
+
_sink = str(_sink)
|
|
53
|
+
|
|
54
|
+
if "{app_name}" in _sink:
|
|
55
|
+
_sink = _sink.format(app_name=config.app_name)
|
|
56
|
+
|
|
57
|
+
handler.sink = _sink
|
|
58
|
+
|
|
59
|
+
if handler.level is None:
|
|
60
|
+
if handler.error:
|
|
61
|
+
handler.level = config.default.level.err
|
|
62
|
+
else:
|
|
63
|
+
handler.level = config.default.level.base
|
|
64
|
+
|
|
65
|
+
if (handler.custom_serialize is None) and handler.serialize:
|
|
66
|
+
handler.custom_serialize = config.default.custom_serialize
|
|
67
|
+
|
|
68
|
+
if handler.custom_serialize:
|
|
69
|
+
handler.serialize = False
|
|
70
|
+
handler.format_ = json_formatter
|
|
71
|
+
|
|
72
|
+
if (handler.format_ is None) and (not handler.serialize):
|
|
73
|
+
handler.format_ = config.default.format_str
|
|
74
|
+
|
|
75
|
+
if handler.filter_ is None:
|
|
76
|
+
if handler.h_type == LogHandlerTypeEnum.STD:
|
|
77
|
+
handler.filter_ = use_std_filter
|
|
78
|
+
elif handler.h_type == LogHandlerTypeEnum.FILE:
|
|
79
|
+
if handler.serialize or handler.custom_serialize:
|
|
80
|
+
if handler.error:
|
|
81
|
+
handler.filter_ = use_file_json_err_filter
|
|
82
|
+
else:
|
|
83
|
+
handler.filter_ = use_file_json_filter
|
|
84
|
+
else:
|
|
85
|
+
if handler.error:
|
|
86
|
+
handler.filter_ = use_file_err_filter
|
|
87
|
+
else:
|
|
88
|
+
handler.filter_ = use_file_filter
|
|
89
|
+
else:
|
|
90
|
+
handler.filter_ = use_all_filter
|
|
91
|
+
|
|
92
|
+
if handler.backtrace is None:
|
|
93
|
+
handler.backtrace = True
|
|
94
|
+
|
|
95
|
+
if (handler.diagnose is None) and (
|
|
96
|
+
(handler.level == LogLevelEnum.TRACE) or (handler.level == 5)
|
|
97
|
+
):
|
|
98
|
+
handler.diagnose = True
|
|
99
|
+
|
|
100
|
+
if handler.h_type == LogHandlerTypeEnum.FILE:
|
|
101
|
+
if handler.enqueue is None:
|
|
102
|
+
handler.enqueue = True
|
|
103
|
+
|
|
104
|
+
if handler.rotation is None:
|
|
105
|
+
handler.rotation = Rotator(
|
|
106
|
+
rotate_size=config.default.file.rotate_size,
|
|
107
|
+
rotate_time=config.default.file.rotate_time,
|
|
108
|
+
).should_rotate
|
|
109
|
+
|
|
110
|
+
if handler.retention is None:
|
|
111
|
+
handler.retention = config.default.file.retention
|
|
112
|
+
|
|
113
|
+
if handler.encoding is None:
|
|
114
|
+
handler.encoding = config.default.file.encoding
|
|
115
|
+
|
|
116
|
+
_handler_dict = handler.model_dump(
|
|
117
|
+
by_alias=True,
|
|
118
|
+
exclude_none=True,
|
|
119
|
+
exclude={
|
|
120
|
+
"enabled",
|
|
121
|
+
"h_type",
|
|
122
|
+
"error",
|
|
123
|
+
"custom_serialize",
|
|
124
|
+
},
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
return _handler_dict
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
__all__ = [
|
|
131
|
+
"build_handler",
|
|
132
|
+
]
|
|
@@ -17,10 +17,11 @@ from pydantic import validate_call
|
|
|
17
17
|
from potato_util import io as io_utils
|
|
18
18
|
|
|
19
19
|
# Internal modules
|
|
20
|
+
from .constants import DEFAULT_LOGURU_HANDLER_NAME, DEFAULT_NO_HANDLER_NAME_PREFIX
|
|
20
21
|
from .schemas import LogHandlerPM, LoguruHandlerPM
|
|
21
22
|
from .config import LoggerConfigPM
|
|
22
23
|
from ._builder import build_handler
|
|
23
|
-
from .
|
|
24
|
+
from .intercepters import add_intercepter
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class LoggerLoader:
|
|
@@ -52,7 +53,7 @@ class LoggerLoader:
|
|
|
52
53
|
**kwargs,
|
|
53
54
|
) -> None:
|
|
54
55
|
|
|
55
|
-
self.handlers_map = {
|
|
56
|
+
self.handlers_map = {DEFAULT_LOGURU_HANDLER_NAME: 0}
|
|
56
57
|
if not config:
|
|
57
58
|
config = LoggerConfigPM()
|
|
58
59
|
|
|
@@ -63,15 +64,15 @@ class LoggerLoader:
|
|
|
63
64
|
self.config_path = config_path
|
|
64
65
|
|
|
65
66
|
if auto_load:
|
|
66
|
-
self.load()
|
|
67
|
+
self.load(load_config_file=True)
|
|
67
68
|
|
|
68
69
|
@validate_call
|
|
69
|
-
def load(self, load_config_file: bool =
|
|
70
|
+
def load(self, load_config_file: bool = False) -> "Logger":
|
|
70
71
|
"""Load logger handlers based on logger config.
|
|
71
72
|
|
|
72
73
|
Args:
|
|
73
74
|
load_config_file (bool, optional): Whether to load config from file before loading handlers.
|
|
74
|
-
Default is
|
|
75
|
+
Default is False.
|
|
75
76
|
|
|
76
77
|
Returns:
|
|
77
78
|
Logger: Main loguru logger instance.
|
|
@@ -84,7 +85,7 @@ class LoggerLoader:
|
|
|
84
85
|
for _key, _handler in self.config.handlers.items():
|
|
85
86
|
self.add_handler(name=_key, handler=_handler)
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
add_intercepter(config=self.config)
|
|
88
89
|
return logger
|
|
89
90
|
|
|
90
91
|
def _load_config_file(self) -> None:
|
|
@@ -195,7 +196,7 @@ class LoggerLoader:
|
|
|
195
196
|
|
|
196
197
|
_handler_id = logger.add(**_handler_dict)
|
|
197
198
|
if not name:
|
|
198
|
-
name = f"
|
|
199
|
+
name = f"{DEFAULT_NO_HANDLER_NAME_PREFIX}{uuid.uuid4().hex}"
|
|
199
200
|
|
|
200
201
|
self.handlers_map[name] = _handler_id
|
|
201
202
|
|