ka-uts-com 1.0.1.250131__py3-none-any.whl → 2.1.0.250408__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/dist/ka_uts_com-2.0.0.250407-py3-none-any.whl +0 -0
- build/lib/dist/ka_uts_com-2.0.0.250407.tar.gz +0 -0
- 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 +14 -5
- build/lib/ka_uts_com/base/log_.py +66 -50
- build/lib/ka_uts_com/com.py +54 -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/ioc/jinja2_.py +1 -1
- build/lib/ka_uts_com/ioc/yaml_.py +2 -1
- 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/pac.py +35 -0
- build/lib/ka_uts_com/utils/pacmod.py +74 -72
- dist/ka_uts_com-2.0.0.250407-py3-none-any.whl +0 -0
- dist/ka_uts_com-2.0.0.250407.tar.gz +0 -0
- ka_uts_com/__version__.py +1 -1
- ka_uts_com/base/app_.py +10 -11
- ka_uts_com/base/cfg_.py +14 -5
- ka_uts_com/base/log_.py +66 -50
- ka_uts_com/com.py +54 -11
- ka_uts_com/data/log.std.yml +47 -26
- ka_uts_com/data/log.usr.yml +46 -25
- ka_uts_com/ioc/jinja2_.py +1 -1
- ka_uts_com/ioc/yaml_.py +2 -1
- 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/pac.py +35 -0
- ka_uts_com/utils/pacmod.py +74 -72
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.dist-info}/METADATA +389 -406
- ka_uts_com-2.1.0.250408.dist-info/RECORD +55 -0
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.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.1.0.250408.dist-info}/WHEEL +0 -0
- {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.dist-info}/top_level.txt +0 -0
Binary file
|
Binary file
|
@@ -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__ = '1.0.
|
4
|
+
__version__ = '2.1.0.250408'
|
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
|
@@ -3,7 +3,6 @@ from typing import Any
|
|
3
3
|
|
4
4
|
from logging import Logger
|
5
5
|
|
6
|
-
from ka_uts_com.utils.pacmod import PacMod
|
7
6
|
from ka_uts_com.ioc.yaml_ import Yaml_
|
8
7
|
|
9
8
|
TyAny = Any
|
@@ -17,11 +16,21 @@ TyLogger = Logger
|
|
17
16
|
class Cfg_:
|
18
17
|
"""Configuration Class
|
19
18
|
"""
|
19
|
+
sw_init: TyBool = False
|
20
20
|
cfg: Any = None
|
21
21
|
|
22
22
|
@classmethod
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
cls.
|
23
|
+
def init(cls, com, **kwargs) -> None:
|
24
|
+
if cls.sw_init:
|
25
|
+
return
|
26
|
+
cls.sw_init = True
|
27
|
+
_path = com.sh_path_cfg()
|
28
|
+
if _path:
|
29
|
+
cls.cfg = Yaml_.read(_path, com.Log)
|
30
|
+
|
31
|
+
@classmethod
|
32
|
+
def sh(cls, com, **kwargs) -> Any:
|
33
|
+
if cls.sw_init:
|
34
|
+
return cls
|
35
|
+
cls.init(com, **kwargs)
|
27
36
|
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
@@ -10,6 +10,8 @@ from logging import Logger
|
|
10
10
|
from datetime import datetime
|
11
11
|
|
12
12
|
from ka_uts_com.utils.aoeqstmt import AoEqStmt
|
13
|
+
from ka_uts_com.utils.pac import Pac
|
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,62 @@ 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)
|
59
75
|
cls.ts = calendar.timegm(time.gmtime())
|
60
76
|
cls.pid = os.getpid()
|
61
77
|
|
78
|
+
cls.path_bin = cls.sh_path_bin()
|
79
|
+
cls.path_log_cfg = cls.sh_path_log_cfg()
|
80
|
+
|
62
81
|
cls.Log = Log_.sh(cls, **kwargs)
|
63
|
-
cls.cfg = Cfg_.sh(cls
|
64
|
-
cls.App = App_.sh(cls
|
82
|
+
cls.cfg = Cfg_.sh(cls, **kwargs)
|
83
|
+
cls.App = App_.sh(cls, **kwargs)
|
65
84
|
cls.Exit = Exit_.sh(**kwargs)
|
66
85
|
|
67
86
|
@classmethod
|
68
|
-
def sh_kwargs(cls,
|
69
|
-
_kwargs: TyDic = AoEqStmt.sh_d_eq(
|
70
|
-
|
71
|
-
cls
|
87
|
+
def sh_kwargs(cls, app_cls, d_parms, *args) -> TyDic:
|
88
|
+
_kwargs: TyDic = AoEqStmt.sh_d_eq(*args, d_parms=d_parms)
|
89
|
+
cls.init(app_cls, _kwargs)
|
90
|
+
_kwargs['com'] = cls
|
72
91
|
return _kwargs
|
92
|
+
|
93
|
+
@classmethod
|
94
|
+
def sh_path_bin(cls) -> Any:
|
95
|
+
""" show directory
|
96
|
+
"""
|
97
|
+
package = cls.d_app_pacmod['package']
|
98
|
+
path = "bin"
|
99
|
+
return Pac.sh_path_by_package(package, path)
|
100
|
+
|
101
|
+
@classmethod
|
102
|
+
def sh_path_log_cfg(cls) -> Any:
|
103
|
+
""" show directory
|
104
|
+
"""
|
105
|
+
_packages = [cls.d_app_pacmod['package'], cls.d_com_pacmod['package']]
|
106
|
+
_path = f"data/log.{cls.log_type}.yml"
|
107
|
+
return Pac.sh_path_by_packages(_packages, _path)
|
108
|
+
|
109
|
+
@classmethod
|
110
|
+
def sh_path_cfg(cls) -> Any:
|
111
|
+
""" show directory
|
112
|
+
"""
|
113
|
+
package = cls.d_app_pacmod['package']
|
114
|
+
path = 'data/cfg.yml'
|
115
|
+
return Pac.sh_path_by_package(package, path)
|
@@ -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'
|
@@ -21,7 +21,8 @@ class Yaml_:
|
|
21
21
|
obj = yaml.load(fd, Loader=yaml.SafeLoader)
|
22
22
|
return obj
|
23
23
|
except FileNotFoundError:
|
24
|
-
log.error(f"No such file or directory: {path}")
|
24
|
+
log.error(f"No such file or directory: path='{path}'")
|
25
|
+
raise
|
25
26
|
except IOError:
|
26
27
|
# if Com.Log is not None:
|
27
28
|
# fnc_error = Com.Log.error
|