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.
Files changed (46) hide show
  1. build/lib/dist/ka_uts_com-2.0.0.250407-py3-none-any.whl +0 -0
  2. build/lib/dist/ka_uts_com-2.0.0.250407.tar.gz +0 -0
  3. build/lib/ka_uts_com/__version__.py +1 -1
  4. build/lib/ka_uts_com/base/app_.py +10 -11
  5. build/lib/ka_uts_com/base/cfg_.py +14 -5
  6. build/lib/ka_uts_com/base/log_.py +66 -50
  7. build/lib/ka_uts_com/com.py +54 -11
  8. build/lib/ka_uts_com/data/log.std.yml +47 -26
  9. build/lib/ka_uts_com/data/log.usr.yml +46 -25
  10. build/lib/ka_uts_com/ioc/jinja2_.py +1 -1
  11. build/lib/ka_uts_com/ioc/yaml_.py +2 -1
  12. build/lib/ka_uts_com/log.py +23 -12
  13. build/lib/ka_uts_com/timer.py +10 -6
  14. build/lib/ka_uts_com/utils/aoeqstmt.py +0 -2
  15. build/lib/ka_uts_com/utils/doeq.py +7 -7
  16. build/lib/ka_uts_com/utils/pac.py +35 -0
  17. build/lib/ka_uts_com/utils/pacmod.py +74 -72
  18. dist/ka_uts_com-2.0.0.250407-py3-none-any.whl +0 -0
  19. dist/ka_uts_com-2.0.0.250407.tar.gz +0 -0
  20. ka_uts_com/__version__.py +1 -1
  21. ka_uts_com/base/app_.py +10 -11
  22. ka_uts_com/base/cfg_.py +14 -5
  23. ka_uts_com/base/log_.py +66 -50
  24. ka_uts_com/com.py +54 -11
  25. ka_uts_com/data/log.std.yml +47 -26
  26. ka_uts_com/data/log.usr.yml +46 -25
  27. ka_uts_com/ioc/jinja2_.py +1 -1
  28. ka_uts_com/ioc/yaml_.py +2 -1
  29. ka_uts_com/log.py +23 -12
  30. ka_uts_com/timer.py +10 -6
  31. ka_uts_com/utils/aoeqstmt.py +0 -2
  32. ka_uts_com/utils/doeq.py +7 -7
  33. ka_uts_com/utils/pac.py +35 -0
  34. ka_uts_com/utils/pacmod.py +74 -72
  35. {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.dist-info}/METADATA +389 -406
  36. ka_uts_com-2.1.0.250408.dist-info/RECORD +55 -0
  37. {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.dist-info}/licenses/LICENSE.txt +1 -2
  38. build/lib/dist/ka_uts_com-1.0.1.250131-py3-none-any.whl +0 -0
  39. build/lib/dist/ka_uts_com-1.0.1.250131.tar.gz +0 -0
  40. build/lib/ka_uts_com/utils/py.typed +0 -0
  41. dist/ka_uts_com-1.0.1.250131-py3-none-any.whl +0 -0
  42. dist/ka_uts_com-1.0.1.250131.tar.gz +0 -0
  43. ka_uts_com/utils/py.typed +0 -0
  44. ka_uts_com-1.0.1.250131.dist-info/RECORD +0 -55
  45. {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.dist-info}/WHEEL +0 -0
  46. {ka_uts_com-1.0.1.250131.dist-info → ka_uts_com-2.1.0.250408.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__ = '1.0.1.250131'
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, log: TyLogger, **kwargs) -> None:
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
- try:
39
- if cls.sw_replace_keys:
40
- d_pacmod: TyDic = kwargs.get('d_pacmod', {})
41
- cls.keys = Yaml_.read(PacMod.sh_path_keys_yaml(d_pacmod), log)
42
- except Exception as exc:
43
- log.error(exc, exc_info=True)
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, log: TyLogger, **kwargs) -> Any:
46
+ def sh(cls, com, **kwargs) -> Any:
48
47
  if cls.sw_init:
49
48
  return cls
50
- cls.init(log, **kwargs)
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 sh(cls, log: TyLogger, d_pacmod: TyDic) -> Any:
24
- """ show configuration
25
- """
26
- cls.cfg = Yaml_.read(PacMod.sh_path_cfg_yaml(d_pacmod), log)
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.utils.pacmod import PacMod
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 sh_run_dir(cls, com, **kwargs) -> TyDir:
41
+ def sh_dir_run(cls, com) -> TyDir:
46
42
  """Show run_dir
47
43
  """
48
- tenant: str = com.d_pacmod['tenant']
49
- package: str = com.d_pacmod['package']
50
- module: str = com.d_pacmod['module']
51
- log_type: str = kwargs.get('log_type', 'std')
52
- if log_type == "std":
53
- return f"/data/{tenant}/RUN/{package}/{module}"
54
- return f"/data/{tenant}/RUN/{package}/{module}/{cls.username}"
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 sh_cfg(cls, com, **kwargs) -> TyDic:
66
+ def sh_d_log_cfg(cls, com, **kwargs) -> TyDic:
58
67
  """Read log file path with jinja2
59
68
  """
60
- run_dir = kwargs.get('run_dir', cls.sh_run_dir(com, **kwargs))
61
- run_dir_debug: str = kwargs.get('run_dir_debug', f"{run_dir}/debs")
62
- run_dir_info: str = kwargs.get('run_dir_info', f"{run_dir}/logs")
63
- run_dir_error: str = kwargs.get('run_dir_error', f"{run_dir}/errs")
64
-
65
- if kwargs.get('sw_mklogdirs', True):
66
- os.makedirs(run_dir_debug, exist_ok=True)
67
- os.makedirs(run_dir_info, exist_ok=True)
68
- os.makedirs(run_dir_error, exist_ok=True)
69
-
70
- log_type = kwargs.get('log_type', 'std')
71
- logcfg_file = f'log.{log_type}.yml'
72
- logcfg_path: str = PacMod.sh_path_cfg_log(filename=logcfg_file)
73
- cfg: TyDic = Jinja2_.read(
74
- logcfg_path,
75
- com.Log,
76
- debug_dir=run_dir_debug,
77
- info_dir=run_dir_info,
78
- error_dir=run_dir_error,
79
- module=com.d_pacmod['module'],
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
- # ts=com.ts_start)
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
- if log_type == 'std':
89
- logger_name = 'main'
90
- else:
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 cfg
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
- cfg = cls.sh_cfg(com, **kwargs)
104
- logging.config.dictConfig(cfg)
105
- if log_type == "std":
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:
@@ -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
- cfg: TnDic = None
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
- Log: Logger = logging.getLogger('dummy_logger')
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, **kwargs):
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.d_pacmod = kwargs.get('d_pacmod', {})
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.Log, cls.d_pacmod)
64
- cls.App = App_.sh(cls.Log, **kwargs)
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, root_cls, d_parms, *args) -> TyDic:
69
- _kwargs: TyDic = AoEqStmt.sh_d_eq(
70
- *args, d_parms=d_parms, root_cls=root_cls)
71
- cls.init(**_kwargs)
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
- # main logger
14
- main:
13
+ # standard logger
14
+ std:
15
15
  # level: NOTSET
16
16
  level: DEBUG
17
17
  handlers:
18
- - main_debug_console
19
- - main_debug_file
20
- - main_info_file
21
- - main_error_file
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
- main_debug_console:
27
+ std_debug_console:
26
28
  class: 'logging.StreamHandler'
27
29
  level: DEBUG
28
- formatter: main_debug
30
+ formatter: std_debug
29
31
  stream: 'ext://sys.stderr'
30
32
 
31
- # main_info_rotating_file_handler:
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
- main_debug_file:
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: main_error
45
- filename: '{{debug_dir}}/debs_{{pid}}_{{ts}}.log'
60
+ formatter: std_debug
61
+ filename: '{{dir_run_debs}}/debs_{{pid}}_{{ts}}.log'
46
62
  mode: 'a'
47
63
 
48
- main_info_file:
64
+ std_info_file:
49
65
  class: 'logging.FileHandler'
50
66
  level: INFO
51
- formatter: main_info
52
- filename: '{{info_dir}}/logs_{{pid}}_{{ts}}.log'
67
+ formatter: std_info
68
+ filename: '{{dir_run_infs}}/infs_{{pid}}_{{ts}}.log'
53
69
  mode: 'a'
54
70
 
55
- main_error_file:
71
+ std_log_file:
56
72
  class: 'logging.FileHandler'
57
- level: ERROR
58
- formatter: main_error
59
- filename: '{{error_dir}}/errs_{{pid}}_{{ts}}.log'
73
+ level: INFO
74
+ formatter: std_log
75
+ filename: '{{dir_run_logs}}/logs_{{pid}}_{{ts}}.log'
60
76
  mode: 'a'
61
77
 
62
- main_critical_mail:
78
+ std_critical_mail:
63
79
  class: 'logging.handlers.SMTPHandler'
64
80
  level: CRITICAL
65
- formatter: main_critical
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
- main_info:
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
- main_error:
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
- main_critical:
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
- # person logger
13
- person:
12
+ # user logger
13
+ usr:
14
14
  # level: NOTSET
15
15
  level: DEBUG
16
16
  handlers:
17
- - person_debug_console
18
- - person_debug_file
19
- - person_info_file
20
- - person_error_file
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
- person_debug_console:
26
+ usr_debug_console:
25
27
  class: 'logging.StreamHandler'
26
28
  level: DEBUG
27
- formatter: person_debug
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
- person_debug_file:
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: person_error
44
- filename: '{{debug_dir}}/debs_{{pid}}_{{ts}}.log'
59
+ formatter: usr_debug
60
+ filename: '{{dir_run_debs}}/debs_{{pid}}_{{ts}}.log'
45
61
  mode: 'a'
46
62
 
47
- person_info_file:
63
+ usr_info_file:
48
64
  class: 'logging.FileHandler'
49
65
  level: INFO
50
- formatter: person_info
51
- filename: '{{info_dir}}/logs_{{pid}}_{{ts}}.log'
66
+ formatter: usr_info
67
+ filename: '{{dir_run_infs}}/infs_{{pid}}_{{ts}}.log'
52
68
  mode: 'a'
53
69
 
54
- person_error_file:
70
+ usr_log_file:
55
71
  class: 'logging.FileHandler'
56
- level: ERROR
57
- formatter: person_error
58
- filename: '{{error_dir}}/errs_{{pid}}_{{ts}}.log'
72
+ level: INFO
73
+ formatter: usr_log
74
+ filename: '{{dir_run_logs}}/logs_{{pid}}_{{ts}}.log'
59
75
  mode: 'a'
60
76
 
61
- person_critical_mail:
77
+ usr_critical_mail:
62
78
  class: 'logging.handlers.SMTPHandler'
63
79
  level: CRITICAL
64
- formatter: person_critical
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
- person_info:
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
- person_error:
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
- person_critical:
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'
@@ -38,5 +38,5 @@ class Jinja2_:
38
38
  return obj
39
39
  except IOError as exc:
40
40
  log.error(exc, exc_info=True)
41
- # log.error(f"No such file or directory: {path}")
41
+ # log.error(f"No such file or directory: path='{path'}")
42
42
  raise
@@ -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