ka-uts-com 1.0.1.250131__py3-none-any.whl → 2.0.0.250407__py3-none-any.whl
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.
- build/lib/ka_uts_com/__version__.py +1 -1
- build/lib/ka_uts_com/base/app_.py +10 -11
- build/lib/ka_uts_com/base/cfg_.py +12 -4
- build/lib/ka_uts_com/base/log_.py +66 -50
- build/lib/ka_uts_com/com.py +60 -11
- build/lib/ka_uts_com/data/log.std.yml +47 -26
- build/lib/ka_uts_com/data/log.usr.yml +46 -25
- build/lib/ka_uts_com/log.py +23 -12
- build/lib/ka_uts_com/timer.py +10 -6
- build/lib/ka_uts_com/utils/aoeqstmt.py +0 -2
- build/lib/ka_uts_com/utils/doeq.py +7 -7
- build/lib/ka_uts_com/utils/pacmod.py +82 -66
- ka_uts_com/__version__.py +1 -1
- ka_uts_com/base/app_.py +10 -11
- ka_uts_com/base/cfg_.py +12 -4
- ka_uts_com/base/log_.py +66 -50
- ka_uts_com/com.py +60 -11
- ka_uts_com/data/log.std.yml +47 -26
- ka_uts_com/data/log.usr.yml +46 -25
- ka_uts_com/log.py +23 -12
- ka_uts_com/timer.py +10 -6
- ka_uts_com/utils/aoeqstmt.py +0 -2
- ka_uts_com/utils/doeq.py +7 -7
- ka_uts_com/utils/pacmod.py +82 -66
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.0.0.250407.dist-info}/METADATA +389 -406
- ka_uts_com-2.0.0.250407.dist-info/RECORD +49 -0
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.0.0.250407.dist-info}/licenses/LICENSE.txt +1 -2
- build/lib/dist/ka_uts_com-1.0.1.250131-py3-none-any.whl +0 -0
- build/lib/dist/ka_uts_com-1.0.1.250131.tar.gz +0 -0
- build/lib/ka_uts_com/utils/py.typed +0 -0
- dist/ka_uts_com-1.0.1.250131-py3-none-any.whl +0 -0
- dist/ka_uts_com-1.0.1.250131.tar.gz +0 -0
- ka_uts_com/utils/py.typed +0 -0
- ka_uts_com-1.0.1.250131.dist-info/RECORD +0 -55
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.0.0.250407.dist-info}/WHEEL +0 -0
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.0.0.250407.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
__title__ = 'ka_uts_com'
|
2
2
|
__description__ = 'Communication Utilities.'
|
3
3
|
__url__ = 'https://ka-ut-com.readthedocs.io/en/latest'
|
4
|
-
__version__ = '
|
4
|
+
__version__ = '2.0.0.250407'
|
5
5
|
__build__ = 0x022200
|
6
6
|
__author__ = 'Bernd Stroehle'
|
7
7
|
__author_email__ = 'bernd.stroehle@gmail.com'
|
@@ -22,30 +22,29 @@ class App_:
|
|
22
22
|
"""Aplication Class
|
23
23
|
"""
|
24
24
|
sw_init: TyBool = False
|
25
|
-
httpmod: TyAny = None
|
26
25
|
sw_replace_keys: TnBool = None
|
27
26
|
keys: TnArr = None
|
27
|
+
httpmod: TyAny = None
|
28
28
|
reqs: TyDic = {}
|
29
29
|
app: TyDic = {}
|
30
30
|
|
31
31
|
@classmethod
|
32
|
-
def init(cls,
|
32
|
+
def init(cls, com, **kwargs) -> None:
|
33
33
|
if cls.sw_init:
|
34
34
|
return
|
35
35
|
cls.sw_init = True
|
36
36
|
cls.httpmod = kwargs.get('httpmod')
|
37
37
|
cls.sw_replace_keys = kwargs.get('sw_replace_keys', False)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
raise
|
38
|
+
if cls.sw_replace_keys:
|
39
|
+
try:
|
40
|
+
cls.keys = Yaml_.read(PacMod.sh_path_keys(com), com.Log)
|
41
|
+
except Exception as exc:
|
42
|
+
com.Log.error(exc, exc_info=True)
|
43
|
+
raise
|
45
44
|
|
46
45
|
@classmethod
|
47
|
-
def sh(cls,
|
46
|
+
def sh(cls, com, **kwargs) -> Any:
|
48
47
|
if cls.sw_init:
|
49
48
|
return cls
|
50
|
-
cls.init(
|
49
|
+
cls.init(com, **kwargs)
|
51
50
|
return cls
|
@@ -17,11 +17,19 @@ TyLogger = Logger
|
|
17
17
|
class Cfg_:
|
18
18
|
"""Configuration Class
|
19
19
|
"""
|
20
|
+
sw_init: TyBool = False
|
20
21
|
cfg: Any = None
|
21
22
|
|
22
23
|
@classmethod
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
cls.
|
24
|
+
def init(cls, com, **kwargs) -> None:
|
25
|
+
if cls.sw_init:
|
26
|
+
return
|
27
|
+
cls.sw_init = True
|
28
|
+
cls.cfg = Yaml_.read(PacMod.sh_path_cfg(com), com.Log)
|
29
|
+
|
30
|
+
@classmethod
|
31
|
+
def sh(cls, com, **kwargs) -> Any:
|
32
|
+
if cls.sw_init:
|
33
|
+
return cls
|
34
|
+
cls.init(com, **kwargs)
|
27
35
|
return cls.cfg
|
@@ -9,7 +9,7 @@ from logging import Logger
|
|
9
9
|
from datetime import datetime
|
10
10
|
import psutil
|
11
11
|
|
12
|
-
from ka_uts_com.
|
12
|
+
# from ka_uts_com.com import Com
|
13
13
|
from ka_uts_com.ioc.jinja2_ import Jinja2_
|
14
14
|
|
15
15
|
TyAny = Any
|
@@ -20,6 +20,7 @@ TyArr = list[Any]
|
|
20
20
|
TyBool = bool
|
21
21
|
TyDic = dict[Any, Any]
|
22
22
|
TyDir = str
|
23
|
+
TyPath = str
|
23
24
|
TyLogger = Logger
|
24
25
|
|
25
26
|
TnAny = None | Any
|
@@ -30,11 +31,6 @@ TnTimeStamp = None | TyTimeStamp
|
|
30
31
|
TnDateTime = None | TyDateTime
|
31
32
|
|
32
33
|
|
33
|
-
class LogStandard:
|
34
|
-
"""Standard Logging
|
35
|
-
"""
|
36
|
-
|
37
|
-
|
38
34
|
class Log_:
|
39
35
|
|
40
36
|
sw_init: bool = False
|
@@ -42,70 +38,90 @@ class Log_:
|
|
42
38
|
username: str = psutil.Process().username()
|
43
39
|
|
44
40
|
@classmethod
|
45
|
-
def
|
41
|
+
def sh_dir_run(cls, com) -> TyDir:
|
46
42
|
"""Show run_dir
|
47
43
|
"""
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
44
|
+
# print(f"sh_dir_run com.dir_dat = {com.dir_dat}")
|
45
|
+
# print(f"sh_dir_run com.cmd = {com.cmd}")
|
46
|
+
# print(f"sh_dir_run com.tenant = {com.tenant}")
|
47
|
+
# print(f"sh_dir_run com = {com}")
|
48
|
+
dir_dat: str = com.dir_dat
|
49
|
+
tenant: str = com.tenant
|
50
|
+
cmd: str = com.cmd
|
51
|
+
package: str = com.d_app_pacmod['package']
|
52
|
+
# module: str = com.d_app_pacmod['module']
|
53
|
+
if tenant is not None:
|
54
|
+
path = f"{dir_dat}/{tenant}/RUN/{package}"
|
55
|
+
else:
|
56
|
+
path = f"{dir_dat}/RUN/{package}"
|
57
|
+
if com.log_type == "usr":
|
58
|
+
path = f"{path}/{cls.username}"
|
59
|
+
if cmd is not None:
|
60
|
+
path = f"{path}/{cmd}"
|
61
|
+
# print(f"sh_dir_run path = {path}")
|
62
|
+
# print("==================================")
|
63
|
+
return path
|
55
64
|
|
56
65
|
@classmethod
|
57
|
-
def
|
66
|
+
def sh_d_log_cfg(cls, com, **kwargs) -> TyDic:
|
58
67
|
"""Read log file path with jinja2
|
59
68
|
"""
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
69
|
+
dir_run = cls.sh_dir_run(com)
|
70
|
+
if kwargs.get('sw_single_dir_run', True):
|
71
|
+
# print("---sw_single_dir_run = True --------------")
|
72
|
+
dir_run_errs = f"{dir_run}/logs"
|
73
|
+
dir_run_wrns = f"{dir_run}/logs"
|
74
|
+
dir_run_infs = f"{dir_run}/logs"
|
75
|
+
dir_run_logs = f"{dir_run}/logs"
|
76
|
+
dir_run_debs = f"{dir_run}/logs"
|
77
|
+
if kwargs.get('sw_mk_dir_run', True):
|
78
|
+
os.makedirs(dir_run_logs, exist_ok=True)
|
79
|
+
else:
|
80
|
+
# print("---sw_single_dir_run = False -------------")
|
81
|
+
dir_run_errs = f"{dir_run}/errs"
|
82
|
+
dir_run_wrns = f"{dir_run}/wrns"
|
83
|
+
dir_run_infs = f"{dir_run}/infs"
|
84
|
+
dir_run_logs = f"{dir_run}/logs"
|
85
|
+
dir_run_debs = f"{dir_run}/debs"
|
86
|
+
if kwargs.get('sw_mk_dir_run', True):
|
87
|
+
os.makedirs(dir_run_errs, exist_ok=True)
|
88
|
+
os.makedirs(dir_run_wrns, exist_ok=True)
|
89
|
+
os.makedirs(dir_run_infs, exist_ok=True)
|
90
|
+
os.makedirs(dir_run_logs, exist_ok=True)
|
91
|
+
os.makedirs(dir_run_debs, exist_ok=True)
|
92
|
+
# path_log_cfg: TyPath = PacMod.sh_path_log_cfg(com)
|
93
|
+
module = com.d_app_pacmod['module']
|
94
|
+
# print(f"sh_d_log_cfg cls.path_log_cfg = {cls.path_log_cfg}")
|
95
|
+
d_log_cfg: TyDic = Jinja2_.read(
|
96
|
+
com.path_log_cfg, com.Log,
|
97
|
+
dir_run_errs=dir_run_errs,
|
98
|
+
dir_run_wrns=dir_run_wrns,
|
99
|
+
dir_run_infs=dir_run_infs,
|
100
|
+
dir_run_logs=dir_run_logs,
|
101
|
+
dir_run_debs=dir_run_debs,
|
102
|
+
module=module,
|
80
103
|
pid=com.pid,
|
81
104
|
ts=com.ts)
|
82
|
-
#
|
105
|
+
# print(f"sh_d_log_cfg d_log_cfg = {d_log_cfg}")
|
83
106
|
sw_debug: TyBool = kwargs.get('sw_debug', False)
|
84
107
|
if sw_debug:
|
85
108
|
level = logging.DEBUG
|
86
109
|
else:
|
87
110
|
level = logging.INFO
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
logger_name = 'person'
|
92
|
-
cfg['handlers'][f"{logger_name}_debug_console"]['level'] = level
|
93
|
-
cfg['handlers'][f"{logger_name}_debug_file"]['level'] = level
|
111
|
+
logger_name = com.log_type
|
112
|
+
d_log_cfg['handlers'][f"{logger_name}_debug_console"]['level'] = level
|
113
|
+
d_log_cfg['handlers'][f"{logger_name}_debug_file"]['level'] = level
|
94
114
|
|
95
|
-
return
|
115
|
+
return d_log_cfg
|
96
116
|
|
97
117
|
@classmethod
|
98
118
|
def init(cls, com, **kwargs) -> None:
|
99
119
|
"""Set static variable log level in log configuration handlers
|
100
120
|
"""
|
101
|
-
log_type = kwargs.get('log_type', 'std')
|
102
121
|
cls.sw_init = True
|
103
|
-
|
104
|
-
logging.config.dictConfig(
|
105
|
-
|
106
|
-
cls.log = logging.getLogger('main')
|
107
|
-
else:
|
108
|
-
cls.log = logging.getLogger(log_type)
|
122
|
+
d_log_cfg = cls.sh_d_log_cfg(com, **kwargs)
|
123
|
+
logging.config.dictConfig(d_log_cfg)
|
124
|
+
cls.log = logging.getLogger(com.log_type)
|
109
125
|
|
110
126
|
@classmethod
|
111
127
|
def sh(cls, com, **kwargs) -> TyLogger:
|
build/lib/ka_uts_com/com.py
CHANGED
@@ -4,12 +4,14 @@ from typing import Any
|
|
4
4
|
import os
|
5
5
|
import time
|
6
6
|
import calendar
|
7
|
+
import importlib.resources as resources
|
7
8
|
import logging
|
8
9
|
import logging.config
|
9
10
|
from logging import Logger
|
10
11
|
from datetime import datetime
|
11
12
|
|
12
13
|
from ka_uts_com.utils.aoeqstmt import AoEqStmt
|
14
|
+
from ka_uts_com.utils.pacmod import PacMod
|
13
15
|
from ka_uts_com.base.app_ import App_
|
14
16
|
from ka_uts_com.base.cfg_ import Cfg_
|
15
17
|
from ka_uts_com.base.exit_ import Exit_
|
@@ -28,15 +30,23 @@ TnArr = None | TyArr
|
|
28
30
|
TnDic = None | TyDic
|
29
31
|
TnTimeStamp = None | TyTimeStamp
|
30
32
|
TnDateTime = None | TyDateTime
|
33
|
+
TnStr = None | str
|
31
34
|
|
32
35
|
|
33
36
|
class Com:
|
34
37
|
"""Communication Class
|
35
38
|
"""
|
36
39
|
sw_init: bool = False
|
37
|
-
|
40
|
+
dir_dat: TnStr = None
|
41
|
+
tenant: TnStr = None
|
42
|
+
log_type: TnStr = None
|
43
|
+
cmd: TnStr = None
|
44
|
+
d_com_pacmod: TyDic = {}
|
45
|
+
d_app_pacmod: TyDic = {}
|
46
|
+
path_bin = None
|
47
|
+
path_log_cfg = None
|
48
|
+
|
38
49
|
pid = None
|
39
|
-
d_pacmod: TyDic = {}
|
40
50
|
|
41
51
|
ts: TnTimeStamp
|
42
52
|
ts_start: TnDateTime = None
|
@@ -44,29 +54,68 @@ class Com:
|
|
44
54
|
ts_etime: TnDateTime = None
|
45
55
|
d_timer: TyDic = {}
|
46
56
|
|
47
|
-
|
57
|
+
cfg: TnDic = None
|
58
|
+
Log = logging.getLogger('dummy_logger')
|
48
59
|
App: Any = None
|
49
60
|
Exit: Any = None
|
50
61
|
|
51
62
|
@classmethod
|
52
|
-
def init(cls,
|
63
|
+
def init(cls, app_cls, kwargs: TyDic):
|
53
64
|
""" set log and application (module) configuration
|
54
65
|
"""
|
55
66
|
if cls.sw_init:
|
56
67
|
return
|
57
68
|
cls.sw_init = True
|
58
|
-
cls.
|
69
|
+
cls.dir_dat = kwargs.get('dir_dat', '/data')
|
70
|
+
cls.tenant = kwargs.get('tenant')
|
71
|
+
cls.log_type = kwargs.get('log_type', 'std')
|
72
|
+
cls.cmd = kwargs.get('cmd')
|
73
|
+
cls.d_com_pacmod = PacMod.sh_d_pacmod(cls)
|
74
|
+
cls.d_app_pacmod = PacMod.sh_d_pacmod(app_cls)
|
75
|
+
|
59
76
|
cls.ts = calendar.timegm(time.gmtime())
|
60
77
|
cls.pid = os.getpid()
|
61
78
|
|
79
|
+
# print(f"Com.init cls.tenanat = {cls.tenant}")
|
80
|
+
# print(f"Com.init cls.cmd = {cls.cmd}")
|
81
|
+
# print(f"Com.init kwargs = {kwargs}")
|
82
|
+
|
83
|
+
cls.set_path_bin()
|
84
|
+
cls.set_path_log_cfg()
|
85
|
+
|
62
86
|
cls.Log = Log_.sh(cls, **kwargs)
|
63
|
-
cls.cfg = Cfg_.sh(cls
|
64
|
-
cls.App = App_.sh(cls
|
87
|
+
cls.cfg = Cfg_.sh(cls, **kwargs)
|
88
|
+
cls.App = App_.sh(cls, **kwargs)
|
65
89
|
cls.Exit = Exit_.sh(**kwargs)
|
66
90
|
|
67
91
|
@classmethod
|
68
|
-
def sh_kwargs(cls,
|
69
|
-
_kwargs: TyDic = AoEqStmt.sh_d_eq(
|
70
|
-
|
71
|
-
cls
|
92
|
+
def sh_kwargs(cls, app_cls, d_parms, *args) -> TyDic:
|
93
|
+
_kwargs: TyDic = AoEqStmt.sh_d_eq(*args, d_parms=d_parms)
|
94
|
+
cls.init(app_cls, _kwargs)
|
95
|
+
_kwargs['com'] = cls
|
72
96
|
return _kwargs
|
97
|
+
|
98
|
+
@classmethod
|
99
|
+
def set_path_bin(cls):
|
100
|
+
""" show directory
|
101
|
+
"""
|
102
|
+
package = cls.d_app_pacmod['package']
|
103
|
+
path = resources.files(package).joinpath("bin")
|
104
|
+
if path.is_file():
|
105
|
+
cls.path_bin = path
|
106
|
+
# raise ModuleNotFoundError
|
107
|
+
|
108
|
+
@classmethod
|
109
|
+
def set_path_log_cfg(cls):
|
110
|
+
""" show directory
|
111
|
+
"""
|
112
|
+
package = cls.d_app_pacmod['package']
|
113
|
+
path = resources.files(package).joinpath(f"data/log.{cls.log_type}.yml")
|
114
|
+
if path.is_file():
|
115
|
+
cls.path_log_cfg = path
|
116
|
+
return
|
117
|
+
package = cls.d_com_pacmod['package']
|
118
|
+
path = resources.files(package).joinpath(f"data/log.{cls.log_type}.yml")
|
119
|
+
if path.is_file():
|
120
|
+
cls.path_log_cfg = path
|
121
|
+
# raise ModuleNotFoundError
|
@@ -10,25 +10,27 @@ disable_existing_loggers: False
|
|
10
10
|
|
11
11
|
loggers:
|
12
12
|
|
13
|
-
#
|
14
|
-
|
13
|
+
# standard logger
|
14
|
+
std:
|
15
15
|
# level: NOTSET
|
16
16
|
level: DEBUG
|
17
17
|
handlers:
|
18
|
-
-
|
19
|
-
-
|
20
|
-
-
|
21
|
-
-
|
18
|
+
- std_debug_console
|
19
|
+
- std_error_file
|
20
|
+
- std_warning_file
|
21
|
+
- std_debug_file
|
22
|
+
- std_info_file
|
23
|
+
- std_log_file
|
22
24
|
|
23
25
|
handlers:
|
24
26
|
|
25
|
-
|
27
|
+
std_debug_console:
|
26
28
|
class: 'logging.StreamHandler'
|
27
29
|
level: DEBUG
|
28
|
-
formatter:
|
30
|
+
formatter: std_debug
|
29
31
|
stream: 'ext://sys.stderr'
|
30
32
|
|
31
|
-
#
|
33
|
+
# std_info_rotating_file_handler:
|
32
34
|
# class: 'logging.handlers.RotatingFileHandler'
|
33
35
|
# level: INFO
|
34
36
|
# formatter: info
|
@@ -38,31 +40,45 @@ handlers:
|
|
38
40
|
# backupCount: 10
|
39
41
|
# encoding: utf8
|
40
42
|
|
41
|
-
|
43
|
+
std_error_file:
|
44
|
+
class: 'logging.FileHandler'
|
45
|
+
level: ERROR
|
46
|
+
formatter: std_error
|
47
|
+
filename: '{{dir_run_errs}}/errs_{{pid}}_{{ts}}.log'
|
48
|
+
mode: 'a'
|
49
|
+
|
50
|
+
std_warning_file:
|
51
|
+
class: 'logging.FileHandler'
|
52
|
+
level: WARNING
|
53
|
+
formatter: std_warning
|
54
|
+
filename: '{{dir_run_wrns}}/wrns_{{pid}}_{{ts}}.log'
|
55
|
+
mode: 'a'
|
56
|
+
|
57
|
+
std_debug_file:
|
42
58
|
class: 'logging.FileHandler'
|
43
59
|
level: DEBUG
|
44
|
-
formatter:
|
45
|
-
filename: '{{
|
60
|
+
formatter: std_debug
|
61
|
+
filename: '{{dir_run_debs}}/debs_{{pid}}_{{ts}}.log'
|
46
62
|
mode: 'a'
|
47
63
|
|
48
|
-
|
64
|
+
std_info_file:
|
49
65
|
class: 'logging.FileHandler'
|
50
66
|
level: INFO
|
51
|
-
formatter:
|
52
|
-
filename: '{{
|
67
|
+
formatter: std_info
|
68
|
+
filename: '{{dir_run_infs}}/infs_{{pid}}_{{ts}}.log'
|
53
69
|
mode: 'a'
|
54
70
|
|
55
|
-
|
71
|
+
std_log_file:
|
56
72
|
class: 'logging.FileHandler'
|
57
|
-
level:
|
58
|
-
formatter:
|
59
|
-
filename: '{{
|
73
|
+
level: INFO
|
74
|
+
formatter: std_log
|
75
|
+
filename: '{{dir_run_logs}}/logs_{{pid}}_{{ts}}.log'
|
60
76
|
mode: 'a'
|
61
77
|
|
62
|
-
|
78
|
+
std_critical_mail:
|
63
79
|
class: 'logging.handlers.SMTPHandler'
|
64
80
|
level: CRITICAL
|
65
|
-
formatter:
|
81
|
+
formatter: std_critical
|
66
82
|
mailhost : localhost
|
67
83
|
fromaddr: 'monitoring@domain.com'
|
68
84
|
toaddrs:
|
@@ -73,14 +89,19 @@ handlers:
|
|
73
89
|
|
74
90
|
formatters:
|
75
91
|
|
76
|
-
|
77
|
-
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
78
|
-
main_debug:
|
92
|
+
std_warning:
|
79
93
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
80
94
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
81
|
-
|
95
|
+
std_error:
|
82
96
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
83
97
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
84
|
-
|
98
|
+
std_debug:
|
99
|
+
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
100
|
+
datefmt: '%Y-%m-%d %H:%M:%S'
|
101
|
+
std_info:
|
102
|
+
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
103
|
+
std_log:
|
104
|
+
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
105
|
+
std_critical:
|
85
106
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
86
107
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
@@ -9,22 +9,24 @@ disable_existing_loggers: False
|
|
9
9
|
|
10
10
|
loggers:
|
11
11
|
|
12
|
-
#
|
13
|
-
|
12
|
+
# user logger
|
13
|
+
usr:
|
14
14
|
# level: NOTSET
|
15
15
|
level: DEBUG
|
16
16
|
handlers:
|
17
|
-
-
|
18
|
-
-
|
19
|
-
-
|
20
|
-
-
|
17
|
+
- usr_debug_console
|
18
|
+
- usr_error_file
|
19
|
+
- usr_warning_file
|
20
|
+
- usr_debug_file
|
21
|
+
- usr_info_file
|
22
|
+
- usr_log_file
|
21
23
|
|
22
24
|
handlers:
|
23
25
|
|
24
|
-
|
26
|
+
usr_debug_console:
|
25
27
|
class: 'logging.StreamHandler'
|
26
28
|
level: DEBUG
|
27
|
-
formatter:
|
29
|
+
formatter: usr_debug
|
28
30
|
stream: 'ext://sys.stderr'
|
29
31
|
|
30
32
|
# person_info_rotating_file_handler:
|
@@ -37,31 +39,45 @@ handlers:
|
|
37
39
|
# backupCount: 10
|
38
40
|
# encoding: utf8
|
39
41
|
|
40
|
-
|
42
|
+
usr_error_file:
|
43
|
+
class: 'logging.FileHandler'
|
44
|
+
level: ERROR
|
45
|
+
formatter: usr_error
|
46
|
+
filename: '{{dir_run_errs}}/errs_{{pid}}_{{ts}}.log'
|
47
|
+
mode: 'a'
|
48
|
+
|
49
|
+
usr_warning_file:
|
50
|
+
class: 'logging.FileHandler'
|
51
|
+
level: ERROR
|
52
|
+
formatter: usr_warning
|
53
|
+
filename: '{{dir_run_wrns}}/wrns_{{pid}}_{{ts}}.log'
|
54
|
+
mode: 'a'
|
55
|
+
|
56
|
+
usr_debug_file:
|
41
57
|
class: 'logging.FileHandler'
|
42
58
|
level: DEBUG
|
43
|
-
formatter:
|
44
|
-
filename: '{{
|
59
|
+
formatter: usr_debug
|
60
|
+
filename: '{{dir_run_debs}}/debs_{{pid}}_{{ts}}.log'
|
45
61
|
mode: 'a'
|
46
62
|
|
47
|
-
|
63
|
+
usr_info_file:
|
48
64
|
class: 'logging.FileHandler'
|
49
65
|
level: INFO
|
50
|
-
formatter:
|
51
|
-
filename: '{{
|
66
|
+
formatter: usr_info
|
67
|
+
filename: '{{dir_run_infs}}/infs_{{pid}}_{{ts}}.log'
|
52
68
|
mode: 'a'
|
53
69
|
|
54
|
-
|
70
|
+
usr_log_file:
|
55
71
|
class: 'logging.FileHandler'
|
56
|
-
level:
|
57
|
-
formatter:
|
58
|
-
filename: '{{
|
72
|
+
level: INFO
|
73
|
+
formatter: usr_log
|
74
|
+
filename: '{{dir_run_logs}}/logs_{{pid}}_{{ts}}.log'
|
59
75
|
mode: 'a'
|
60
76
|
|
61
|
-
|
77
|
+
usr_critical_mail:
|
62
78
|
class: 'logging.handlers.SMTPHandler'
|
63
79
|
level: CRITICAL
|
64
|
-
formatter:
|
80
|
+
formatter: usr_critical
|
65
81
|
mailhost : localhost
|
66
82
|
fromaddr: 'monitoring@domain.com'
|
67
83
|
toaddrs:
|
@@ -72,14 +88,19 @@ handlers:
|
|
72
88
|
|
73
89
|
formatters:
|
74
90
|
|
75
|
-
|
76
|
-
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
77
|
-
person_debug:
|
91
|
+
usr_errs:
|
78
92
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
79
93
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
80
|
-
|
94
|
+
usr_wrns:
|
81
95
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
82
96
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
83
|
-
|
97
|
+
usr_debs:
|
98
|
+
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
99
|
+
datefmt: '%Y-%m-%d %H:%M:%S'
|
100
|
+
usr_infs:
|
101
|
+
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
102
|
+
usr_logs:
|
103
|
+
format: '%(asctime)s-%(levelname)s-%(name)s::%(module)s|%(lineno)s:: %(message)s'
|
104
|
+
usr_critical:
|
84
105
|
format: '%(asctime)-15s %(levelname)s-%(name)s-%(process)d::%(module)s.%(funcName)s|%(lineno)s:: %(message)s'
|
85
106
|
datefmt: '%Y-%m-%d %H:%M:%S'
|
build/lib/ka_uts_com/log.py
CHANGED
@@ -8,21 +8,25 @@ class Log:
|
|
8
8
|
"""
|
9
9
|
class Eq:
|
10
10
|
|
11
|
-
@classmethod
|
12
|
-
def debug(cls, key: Any, value: Any) -> None:
|
13
|
-
Log.debug(f"{key} = {value}", stacklevel=3)
|
14
|
-
|
15
11
|
@classmethod
|
16
12
|
def error(cls, key: Any, value: Any) -> None:
|
17
13
|
Log.error(f"{key} = {value}", stacklevel=3)
|
18
14
|
|
15
|
+
@classmethod
|
16
|
+
def warning(cls, key: Any, value: Any) -> None:
|
17
|
+
Log.warning(f"{key} = {value}", stacklevel=3)
|
18
|
+
|
19
19
|
@classmethod
|
20
20
|
def info(cls, key: Any, value: Any) -> None:
|
21
21
|
Log.info(f"{key} = {value}", stacklevel=3)
|
22
22
|
|
23
23
|
@classmethod
|
24
|
-
def
|
25
|
-
Log.
|
24
|
+
def log(cls, key: Any, value: Any) -> None:
|
25
|
+
Log.log(f"{key} = {value}", stacklevel=3)
|
26
|
+
|
27
|
+
@classmethod
|
28
|
+
def debug(cls, key: Any, value: Any) -> None:
|
29
|
+
Log.debug(f"{key} = {value}", stacklevel=3)
|
26
30
|
|
27
31
|
class Dic:
|
28
32
|
|
@@ -47,18 +51,18 @@ class Log:
|
|
47
51
|
Log.warning(f"{key} = {value}", stacklevel=3)
|
48
52
|
|
49
53
|
@staticmethod
|
50
|
-
def
|
54
|
+
def error(*args, **kwargs) -> None:
|
51
55
|
if kwargs is None:
|
52
56
|
kwargs = {}
|
53
57
|
kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
|
54
|
-
Com.Log.
|
58
|
+
Com.Log.error(*args, **kwargs)
|
55
59
|
|
56
60
|
@staticmethod
|
57
|
-
def
|
61
|
+
def warning(*args, **kwargs) -> None:
|
58
62
|
if kwargs is None:
|
59
63
|
kwargs = {}
|
60
64
|
kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
|
61
|
-
Com.Log.
|
65
|
+
Com.Log.warning(*args, **kwargs)
|
62
66
|
|
63
67
|
@staticmethod
|
64
68
|
def info(*args, **kwargs) -> None:
|
@@ -68,8 +72,15 @@ class Log:
|
|
68
72
|
Com.Log.info(*args, **kwargs)
|
69
73
|
|
70
74
|
@staticmethod
|
71
|
-
def
|
75
|
+
def log(*args, **kwargs) -> None:
|
72
76
|
if kwargs is None:
|
73
77
|
kwargs = {}
|
74
78
|
kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
|
75
|
-
Com.Log.
|
79
|
+
Com.Log.log(*args, **kwargs)
|
80
|
+
|
81
|
+
@staticmethod
|
82
|
+
def debug(*args, **kwargs) -> None:
|
83
|
+
if kwargs is None:
|
84
|
+
kwargs = {}
|
85
|
+
kwargs['stacklevel'] = kwargs.get('stacklevel', 2)
|
86
|
+
Com.Log.debug(*args, **kwargs)
|