easy-utils-dev 2.156__tar.gz → 2.158__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.
Files changed (43) hide show
  1. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/PKG-INFO +1 -1
  2. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/debugger.py +31 -17
  3. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/wsnoclib.py +1 -1
  4. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev.egg-info/PKG-INFO +1 -1
  5. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev.egg-info/SOURCES.txt +0 -1
  6. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/setup.py +1 -1
  7. easy_utils_dev-2.156/easy_utils_dev/debugger-C-PF4PAMMP.py +0 -486
  8. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/MANIFEST.in +0 -0
  9. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/EasySsh.py +0 -0
  10. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/Events.py +0 -0
  11. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/FastQueue.py +0 -0
  12. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/NameObject.py +0 -0
  13. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/__init__.py +0 -0
  14. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/abortable.py +0 -0
  15. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/brevosmtp.py +0 -0
  16. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/check_license.py +0 -0
  17. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/cplib.py +0 -0
  18. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/custom_env.py +0 -0
  19. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/easy_oracle.py +0 -0
  20. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/encryptor.py +0 -0
  21. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/ept.py +0 -0
  22. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/ept_sql/create_dirs.sql +0 -0
  23. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/ept_sql/create_ept_tables.sql +0 -0
  24. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/exceptions.py +0 -0
  25. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/filescompressor.py +0 -0
  26. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/generate_license.py +0 -0
  27. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/keycloakapi.py +0 -0
  28. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/lralib.py +0 -0
  29. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/ne1830PSS.py +0 -0
  30. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/nsp_kafka.py +0 -0
  31. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/openid_server.py +0 -0
  32. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/optics_utils.py +0 -0
  33. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/require_auth.py +0 -0
  34. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/simple_sqlite.py +0 -0
  35. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/temp_memory.py +0 -0
  36. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/uiserver.py +0 -0
  37. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/utils.py +0 -0
  38. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/winserviceapi.py +0 -0
  39. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev/wsselib.py +0 -0
  40. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev.egg-info/dependency_links.txt +0 -0
  41. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev.egg-info/requires.txt +0 -0
  42. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/easy_utils_dev.egg-info/top_level.txt +0 -0
  43. {easy_utils_dev-2.156 → easy_utils_dev-2.158}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easy_utils_dev
3
- Version: 2.156
3
+ Version: 2.158
4
4
  Keywords: python3
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Requires-Dist: psutil
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  import os
3
3
  import shutil
4
- import sys
4
+ import sys , re , random
5
5
  from datetime import datetime
6
6
  from logging.handlers import RotatingFileHandler
7
7
  from .utils import getRandomKey , convert_mb_to_bytes , getTimestamp, mkdirs , start_thread
@@ -33,6 +33,33 @@ def setGlobalDebugLevel(level='info') :
33
33
  gEvent.dispatchEvent('update_debug_level')
34
34
 
35
35
 
36
+ class CensorFilter(logging.Filter):
37
+ def __init__(self):
38
+ super().__init__()
39
+ self.censored_strings = []
40
+ self.censor_ip = True
41
+ # Regex for IPv4
42
+ self.ip_regex = re.compile(r"\b\d{1,3}(?:\.\d{1,3}){3}\b")
43
+
44
+ def add_censored_string(self, value):
45
+ if value:
46
+ self.censored_strings.append(str(value))
47
+
48
+ def filter(self, record):
49
+ msg = record.getMessage()
50
+
51
+ # Replace registered sensitive strings
52
+ for s in self.censored_strings:
53
+ x = random.randint(5, 10)
54
+ msg = msg.replace(s, '*'*x)
55
+ # Replace IPs
56
+ if self.censor_ip :
57
+ msg = self.ip_regex.sub("***.***.***.***", msg)
58
+ # Overwrite message
59
+ record.msg = msg
60
+ record.args = ()
61
+ return True
62
+
36
63
  class DEBUGGER:
37
64
  def __init__(self
38
65
  , name
@@ -80,6 +107,9 @@ class DEBUGGER:
80
107
  self.global_debugger = global_debugger
81
108
  self.isLogWriteDisabled = disable_log_write
82
109
  self.type = "CUSTOM_DEBUGGER"
110
+ self.censor = CensorFilter()
111
+ console_handler.addFilter(self.censor)
112
+
83
113
  self.seperate_files=seperate_files
84
114
  if fullSyntax :
85
115
  f = f"[%(asctime)s]-[{self.name}]-[%(levelname)s]: %(message)s"
@@ -132,20 +162,6 @@ class DEBUGGER:
132
162
  self.lastAbsoluteHomePath = base_path
133
163
  self.log_path_with_filename = os.path.join(base_path, f'{logname}.log')
134
164
 
135
-
136
- def fix_file_not_found_file_rotation(self) :
137
- for i in range(self.BACKUP_COUNT) :
138
- try :
139
- file_path = self.homePath + f'.{i}'
140
- # print(f"Checking log file path : {file_path}")
141
- if not os.path.exists(file_path) :
142
- with open(file_path, 'a+') as f :
143
- # print(f"Creating log file path : {file_path}")
144
- f.write('')
145
- except :
146
- pass
147
-
148
-
149
165
  def switch_full_syntax(self , toggle) :
150
166
  if toggle :
151
167
  f = f"[%(asctime)s]-[{self.name}]-[%(levelname)s]: %(message)s"
@@ -169,7 +185,6 @@ class DEBUGGER:
169
185
  return
170
186
  if not self.isLogWriteDisabled :
171
187
  getFromEnv = self.env.get('debugger_homepath' , None )
172
- # print(f"getFromEnv : {getFromEnv}")
173
188
  if getFromEnv :
174
189
  self.create_log_path(getFromEnv, self.filename)
175
190
  self.file_handler_class = self.createRotateFileHandler(self.log_path_with_filename)
@@ -260,7 +275,6 @@ class DEBUGGER:
260
275
 
261
276
  def checks_in_bg(self) :
262
277
  while True :
263
- #self.fix_file_not_found_file_rotation()
264
278
  if self.env.get('GLOBAL_DEBUGGER_STREAM_SERVICE') :
265
279
  self.addStreamService(socketio=self.env.get('GLOBAL_DEBUGGER_STREAM_SERVICE'))
266
280
  if self.env.get('debugger_global_level' , None) :
@@ -55,7 +55,7 @@ class WSNOCLIB :
55
55
  password ,
56
56
  debug_level='info',
57
57
  debug_name='wsnoclib' ,
58
- debug_homepath='./debug/',
58
+ debug_homepath=os.getcwd(),
59
59
  request_max_count=30,
60
60
  tmp_dir = tempfile.gettempdir() ,
61
61
  kafka = KafkaConfig(),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easy_utils_dev
3
- Version: 2.156
3
+ Version: 2.158
4
4
  Keywords: python3
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Requires-Dist: psutil
@@ -10,7 +10,6 @@ easy_utils_dev/brevosmtp.py
10
10
  easy_utils_dev/check_license.py
11
11
  easy_utils_dev/cplib.py
12
12
  easy_utils_dev/custom_env.py
13
- easy_utils_dev/debugger-C-PF4PAMMP.py
14
13
  easy_utils_dev/debugger.py
15
14
  easy_utils_dev/easy_oracle.py
16
15
  easy_utils_dev/encryptor.py
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- VERSION = '2.156'
3
+ VERSION = '2.158'
4
4
 
5
5
  # Setting up
6
6
  setup(
@@ -1,486 +0,0 @@
1
- import logging
2
- import os
3
- import sys
4
- from datetime import datetime
5
- from logging.handlers import RotatingFileHandler
6
- from .utils import getRandomKey , convert_mb_to_bytes , getTimestamp , start_thread
7
- from .custom_env import custom_env , setupEnvironment
8
- from .Events import EventEmitter
9
- from threading import Thread
10
- from time import sleep
11
-
12
- gEvent = EventEmitter()
13
- logging.addLevelName(25, "SCREEN")
14
-
15
- def setGlobalHomePath( path ) :
16
- env = custom_env()
17
- env['debugger_homepath'] = path
18
- gEvent.dispatchEvent('update_home_path')
19
-
20
- def setGlobalDisableOnScreen(on_screen=False) :
21
- env = custom_env()
22
- env['debugger_on_screen'] = on_screen
23
- if not on_screen :
24
- gEvent.dispatchEvent('disable_global_printing')
25
- else :
26
- gEvent.dispatchEvent('enable_global_printing')
27
-
28
-
29
- def setGlobalDebugLevel(level='info') :
30
- env = custom_env()
31
- env['debugger_global_level'] = level
32
- gEvent.dispatchEvent('update_debug_level')
33
-
34
-
35
- class DEBUGGER:
36
- def __init__(self
37
- , name
38
- , level='info',
39
- fullSyntax=True,
40
- onscreen=True,
41
- log_rotation=3,
42
- homePath=None,
43
- id=getRandomKey(9) ,
44
- global_debugger=None,
45
- disable_log_write=False,
46
- file_name=None,
47
- seperate_files=True
48
- ):
49
- env = custom_env()
50
- setupEnvironment( 'debugger' )
51
- debugger_on_screen = env.get('debugger_on_screen' , True)
52
- env['debugger_on_screen'] = debugger_on_screen
53
- self.env = env
54
- self.events = gEvent
55
- self.debuggerLabel = f"{name}"
56
- self.logger = logging.getLogger(self.debuggerLabel)
57
- self.set_level(level)
58
- self.file_handler_class=None
59
- self.LOG_SIZE_THRESHOLD_IN_BYTES = 10 * 1024 * 1024
60
- self.BACKUP_COUNT = log_rotation
61
- self.homePath = homePath
62
- self.lastAbsoluteHomePath= None
63
- self.fullSyntax=fullSyntax
64
- self.onScreen= onscreen
65
- self.id = id
66
- self.how_many_times_write= 0
67
- self.stream_service = None
68
- if not env['debugger'].get(name) :
69
- self.console = console_handler = logging.StreamHandler()
70
- else :
71
- self.console = console_handler = env['debugger'].get(name).console
72
- if not self.logger.hasHandlers() :
73
- self.logger.addHandler(self.console)
74
- self.name = name
75
- self.rotate_disabled=False
76
- self.isInPyinstaller = False
77
- self.log_iterations=0
78
- self.log_iterations_threshold = 200
79
- self.global_debugger = global_debugger
80
- self.isLogWriteDisabled = disable_log_write
81
- self.type = "CUSTOM_DEBUGGER"
82
- self.seperate_files=seperate_files
83
- if fullSyntax :
84
- f = f"[%(asctime)s]-[{self.name}]-[%(levelname)s]: %(message)s"
85
- else :
86
- f = f"[{self.name}]-[%(levelname)s]: %(message)s"
87
- self.syntax = f
88
- self.formatter = logging.Formatter(f , datefmt='%Y-%m-%d %H:%M:%S' )
89
- self.filename = file_name
90
- path = self.homepath(homePath)
91
- if not env['debugger'].get(name) :
92
- console_handler.setFormatter(self.formatter)
93
- if not disable_log_write :
94
- if not env['debugger'].get(name) :
95
- self.file_handler_class = self.createRotateFileHandler(path)
96
- if onscreen :
97
- self.enable_print()
98
- elif not onscreen :
99
- self.disable_print()
100
- self.events.addEventListener('disable_global_printing' , self.disable_print )
101
- self.events.addEventListener('enable_global_printing' , self.enable_print )
102
- self.events.addEventListener('update_home_path' , self.updateGlobalHomePath )
103
- self.events.addEventListener('update_debug_level' , self.updateGlobalSetLevel )
104
- if env['debugger'].get(name) :
105
- self = env['debugger'].get(name)
106
- else:
107
- env['debugger'][id] = self
108
- env['debugger'][name] = self
109
- if not env.get('debugger_on_screen' , True ) :
110
- self.disable_print()
111
- if env.get('debugger_on_screen' , True ) :
112
- self.enable_print()
113
- if os.environ.get("EASY_UTILS_DEBUG_LEVEL") :
114
- EASY_UTILS_DEBUG_LEVEL = os.environ.get("EASY_UTILS_DEBUG_LEVEL")
115
- if not EASY_UTILS_DEBUG_LEVEL.lower() in ['info' , 'debug' , 'warning' , 'error' , 'critical'] :
116
- self.logger.error(f'EASY_UTILS_DEBUG_LEVEL ENV must be one of [info,debug,warning,error,critical] | Current Env Variable Is "{EASY_UTILS_DEBUG_LEVEL}". Skipping ')
117
- else :
118
- self.set_level(EASY_UTILS_DEBUG_LEVEL)
119
- if os.environ.get("EASY_UTILS_ENABLE_PRINT" , '' ).lower() == 'true' :
120
- self.enable_print()
121
-
122
- def switch_full_syntax(self , toggle) :
123
- if toggle :
124
- f = f"[%(asctime)s]-[{self.name}]-[%(levelname)s]: %(message)s"
125
- else :
126
- f = f"[{self.name}]-[%(levelname)s]: %(message)s"
127
- self.syntax = f
128
- self.formatter = logging.Formatter(f , datefmt='%Y-%m-%d %H:%M:%S' )
129
- self.console.setFormatter(self.formatter)
130
-
131
- def custom_log_syntax(self , syntax) :
132
- '''
133
- f"[%(asctime)s]-[{self.name}]-[%(levelname)s]: %(message)s"
134
- '''
135
- f = syntax
136
- self.syntax = f
137
- self.formatter = logging.Formatter(f , datefmt='%Y-%m-%d %H:%M:%S' )
138
- self.console.setFormatter(self.formatter)
139
-
140
- def updateGlobalHomePath(self ) :
141
- if not self.isLogWriteDisabled :
142
- getFromEnv = self.env.get('debugger_homepath' , None )
143
- self.homepath(getFromEnv)
144
- if getFromEnv :
145
- self.file_handler_class = self.createRotateFileHandler(self.homePath)
146
-
147
- def updateGlobalSetLevel( self ) :
148
- self.set_level(self.env['debugger_global_level'])
149
-
150
- def advertiseGlobalDebugLevel(self , level) :
151
- setGlobalDebugLevel(level)
152
-
153
- def disable_rotate(self) :
154
- self.rotate_disabled = True
155
-
156
- def enable_rotate(self) :
157
- self.rotate_disabled = False
158
-
159
- def createRotateFileHandler( self , path ) :
160
- old = self.file_handler_class
161
- if old :
162
- self.logger.removeHandler(old)
163
- file_handler = RotatingFileHandler(path , maxBytes=self.LOG_SIZE_THRESHOLD_IN_BYTES , backupCount=self.BACKUP_COUNT , delay=True )
164
- self.file_handler= file_handler.setFormatter(self.formatter)
165
- self.logger.addHandler(file_handler)
166
- return file_handler
167
-
168
- def update_log_iterantions_threshold(self,threshold : int ):
169
- '''
170
- set value when rotation should be checked. when every on_log function called.
171
- by default rotation will be checked every 200 on_log function call.
172
- '''
173
- self.log_iterations_threshold = threshold
174
-
175
- def updateGlobalDebugger(self , logger ) :
176
- '''
177
- this function pass the log message to other logger to write the same log message to it.
178
- logger must be debugger class.
179
- '''
180
- if logger.type != 'CUSTOM_DEBUGGER' :
181
- raise Exception(f'Invalid logger type. must pass debugger class.')
182
- self.global_debugger = logger
183
-
184
- def getStreamServiceUrlPath(self) :
185
- return self.streampath
186
-
187
- def getStreamService(self) :
188
- return self.stream_service
189
-
190
- def isStreamServiceAvailable(self) :
191
- if self.stream_service :
192
- return True
193
- return False
194
-
195
- def addStreamService( self , socketio , streampath='/debugger/stream/log' ) :
196
- """
197
- This function takes a live socketio server. it emit the log message using default path which is /debugger/stream/log
198
- """
199
- self.stream_service = socketio
200
- self.streampath = streampath
201
-
202
- def updateLogName( self , name ) :
203
- self.name = name
204
-
205
- def disable_log_write(self) :
206
- '''
207
- this function is used to disable the log write to file. if onScreen is enabled, logs will be displayed only on screen.
208
- '''
209
- self.isLogWriteDisabled = True
210
- if self.file_handler_class :
211
- self.logger.removeHandler(self.file_handler_class)
212
-
213
- def enable_log_write(self) :
214
- self.createRotateFileHandler(self.homePath)
215
-
216
- def manage_file_rotation(self, record ) :
217
- handler = self.get_rotate_handler()
218
- if handler.shouldRollover(record) :
219
- handler.doRollover()
220
- self.log_iterations = 0
221
-
222
- def get_rotate_handler(self) :
223
- return self.file_handler_class
224
-
225
- def change_log_size(self, size) -> bool:
226
- '''
227
- change the size of each log file rotation.
228
- default is 10M
229
- size should be passed as MB
230
- '''
231
- size = convert_mb_to_bytes(size)
232
- self.LOG_SIZE_THRESHOLD_IN_BYTES = size
233
- handler = self.get_rotate_handler()
234
- handler.maxBytes = size
235
- return True
236
-
237
-
238
- def checks_in_bg(self) :
239
- while True :
240
- if self.env.get('GLOBAL_DEBUGGER_STREAM_SERVICE') :
241
- self.addStreamService(socketio=self.env.get('GLOBAL_DEBUGGER_STREAM_SERVICE'))
242
- if self.env.get('debugger_global_level' , None) :
243
- self.set_level( level=self.env.get('debugger_global_level') )
244
- if not self.env.get('debugger_on_screen' , True ) :
245
- self.disable_print()
246
- if self.env.get('debugger_on_screen' , True ) :
247
- self.enable_print()
248
- if os.environ.get("EASY_UTILS_DEBUG_LEVEL") :
249
- EASY_UTILS_DEBUG_LEVEL = os.environ.get("EASY_UTILS_DEBUG_LEVEL")
250
- if not EASY_UTILS_DEBUG_LEVEL.lower() in ['info' , 'debug' , 'warning' , 'error' , 'critical'] :
251
- self.logger.error(f'EASY_UTILS_DEBUG_LEVEL ENV must be one of [info,debug,warning,error,critical] | Current Env Variable Is "{EASY_UTILS_DEBUG_LEVEL}". Skipping ')
252
- else :
253
- self.set_level(EASY_UTILS_DEBUG_LEVEL)
254
- self.updateGlobalHomePath()
255
- if os.environ.get("EASY_UTILS_ENABLE_PRINT" , '' ).lower() == 'true' :
256
- self.enable_print()
257
- sleep(5)
258
-
259
- def close(self) :
260
- try :
261
- logging.shutdown()
262
- except :
263
- pass
264
-
265
- def homepath(self , path=None ) :
266
- env = custom_env()
267
- getFromEnv = env.get('debugger_homepath' , None )
268
- if getFromEnv is not None :
269
- self.homePath = getFromEnv
270
- else :
271
- if path is not None :
272
- if self.homePath and '.log' in str(self.homePath):
273
- self.lastAbsoluteHomePath= self.homePath
274
- self.homePath = path
275
- else :
276
- self.homePath = os.path.join(os.getcwd() , 'debug')
277
- if not os.path.exists( self.homePath ) :
278
- try :
279
- os.makedirs( self.homePath )
280
- except :
281
- pass
282
- if self.filename :
283
- self.homePath = os.path.join( self.homePath, f'{self.filename}.log' )
284
- else :
285
- self.homePath = os.path.join( self.homePath, f'{self.name}.log' )
286
- return self.homePath
287
-
288
- def get_current_levels(self):
289
- """
290
- Returns a list of log levels that will be printed based on the current logging level.
291
- """
292
- levels_order = [
293
- ('debug', logging.DEBUG),
294
- ('info', logging.INFO),
295
- ('warning', logging.WARNING),
296
- ('error', logging.ERROR),
297
- ('critical', logging.CRITICAL),
298
- ]
299
- # Optional custom level
300
- if hasattr(logging, 'SCREEN'):
301
- levels_order.append(('screen', logging.SCREEN))
302
- current_level = self.logger.level
303
- # Return all levels with numeric value >= current_level
304
- return [name for name, value in levels_order if value >= current_level]
305
-
306
- def enable_print(self) :
307
- self.onScreen = True
308
- self.logger.addHandler(self.console)
309
-
310
- def disable_print(self) :
311
- self.onScreen = False
312
- self.logger.removeHandler(self.console)
313
-
314
- def changeHomePath( self , path ) :
315
- p = self.homepath(path)
316
- self.file_handler_class = self.createRotateFileHandler(p)
317
- if self.lastAbsoluteHomePath :
318
- os.remove(self.lastAbsoluteHomePath)
319
-
320
- def isGlobalDebuggerDefined(self) :
321
- if self.global_debugger :
322
- return True
323
- else :
324
- return False
325
-
326
- def set_level(self, level : str):
327
- if 'info' in level.lower() : lvl = logging.INFO
328
- elif 'warn' in level.lower() : lvl = logging.WARNING
329
- elif 'warning' in level.lower() : lvl = logging.WARNING
330
- elif 'critical' in level.lower() : lvl = logging.CRITICAL
331
- elif 'debug' in level.lower() : lvl = logging.DEBUG
332
- elif 'error' in level.lower() : lvl = logging.ERROR
333
- elif 'screen' in level.lower() : lvl = logging.SCREEN
334
- else : raise ValueError('Unknown level, not one of [info,warn,warning,critical,debug,error,screen]')
335
- self.currentDebugLevel = level
336
- self.logger.setLevel(lvl)
337
-
338
- def get_current_debug_level(self) :
339
- return self.currentDebugLevel
340
-
341
- def get_logger(self) :
342
- return self.logger
343
-
344
- def before_log(self , message , level) :
345
-
346
- def __call_thread__() :
347
- if not level in self.get_current_levels() :
348
- return
349
- if self.isStreamServiceAvailable() :
350
- d = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
351
- streamUrl = self.getStreamServiceUrlPath()
352
- self.stream_service.emit( streamUrl , {
353
- 'message' : message ,
354
- 'level' : level ,
355
- 'msg' : message,
356
- 'date' : d ,
357
- 'id' : self.id,
358
- 'formate' : 'json' ,
359
- 'source' : self.name ,
360
- 'getTimestamp' : getTimestamp()
361
- })
362
- try :
363
- t= Thread(target=__call_thread__)
364
- # t.daemon=True
365
- t.start()
366
- except :
367
- __call_thread__()
368
-
369
- params = {
370
- 'screen' : True ,
371
- 'file': True
372
- }
373
- if self.onScreen and self.env['debugger_on_screen'] == True :
374
- params['screen'] = True
375
- else :
376
- params['screen'] = False
377
- return params
378
-
379
-
380
- def info(self, message , external_debugger=None,source=None):
381
- def __call__(message) :
382
- if source :
383
- message = f'[{source}]-{message}'
384
- self.before_log(message , 'info')
385
- self.logger.info(message)
386
- if self.isGlobalDebuggerDefined() :
387
- self.global_debugger.info(message)
388
- if external_debugger :
389
- external_debugger.info(message)
390
- try :
391
- r=Thread(target=__call__,args=[message])
392
- r.daemon=True
393
- r.start()
394
- r.join()
395
- except :
396
- __call__(message)
397
-
398
- def debug(self, message , external_debugger=None,source=None):
399
- def __call__(message) :
400
- if source :
401
- message = f'[{source}]-{message}'
402
- self.before_log(message , 'debug')
403
- self.logger.debug(message)
404
- if self.isGlobalDebuggerDefined() :
405
- self.global_debugger.debug(message)
406
- if external_debugger :
407
- external_debugger.debug(message)
408
- try :
409
- r=Thread(target=__call__,args=[message])
410
- r.daemon=True
411
- r.start()
412
- r.join()
413
- except :
414
- __call__(message)
415
-
416
- def warning(self, message , external_debugger=None,source=None):
417
- def __call__(message) :
418
- if source :
419
- message = f'[{source}]-{message}'
420
- self.before_log(message , 'warning')
421
- self.logger.warning(message)
422
- if self.isGlobalDebuggerDefined() :
423
- self.global_debugger.warning(message)
424
- if external_debugger :
425
- external_debugger.warning(message)
426
- try :
427
- r=Thread(target=__call__,args=[message])
428
- r.daemon=True
429
- r.start()
430
- r.join()
431
- except :
432
- __call__(message)
433
-
434
- def error(self, message,external_debugger=None,source=None):
435
- def __call__(message) :
436
- if source :
437
- message = f'[{source}]-{message}'
438
- self.before_log(message , 'error')
439
- self.logger.error(message)
440
- if self.isGlobalDebuggerDefined() :
441
- self.global_debugger.error(message)
442
- if external_debugger :
443
- external_debugger.error(message)
444
- try :
445
- r=Thread(target=__call__,args=[message])
446
- r.daemon=True
447
- r.start()
448
- r.join()
449
- except :
450
- __call__(message)
451
-
452
- def critical(self, message,external_debugger=None,source=None):
453
- def __call__() :
454
- if source :
455
- message = f'[{source}]-{message}'
456
- self.before_log(message , 'critical')
457
- self.logger.critical(message)
458
- if self.isGlobalDebuggerDefined() :
459
- self.global_debugger.critical(message)
460
- if external_debugger :
461
- external_debugger.critical(message)
462
- try :
463
- r=Thread(target=__call__,args=[message])
464
- r.daemon=True
465
- r.start()
466
- r.join()
467
- except :
468
- __call__(message)
469
-
470
- def screen(self, message,external_debugger=None,source=None):
471
- def __call__() :
472
- if source :
473
- message = f'[{source}]-{message}'
474
- self.before_log(message , 'critical')
475
- print(f"{self.syntax}")
476
- if self.isGlobalDebuggerDefined() :
477
- self.global_debugger.critical(message)
478
- if external_debugger :
479
- external_debugger.critical(message)
480
- try :
481
- r=Thread(target=__call__,args=[message])
482
- r.daemon=True
483
- r.start()
484
- r.join()
485
- except :
486
- __call__(message)
File without changes