some logs improvement
This commit is contained in:
1 parent
0fa40dc2ff
commit
3171433770
2 files changed
+26
-8
No files matched your search
+24
-7
@@ -1,4 +1,5 @@
|
|||||||
#import appdaemon.plugins.hass.hassapi as hass
|
#import appdaemon.plugins.hass.hassapi as hass
|
||||||
|
from contextlib import nullcontext
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from adexpressioncontext import ADExpressionContext
|
from adexpressioncontext import ADExpressionContext
|
||||||
from expressionparser import ExpressionParser,ParsingException,EvaluationException
|
from expressionparser import ExpressionParser,ParsingException,EvaluationException
|
||||||
@@ -31,6 +32,8 @@ class Evaluator():
|
|||||||
|
|
||||||
self.__no_log_prefix = parser.parse_args('no_log_prefix',False) #as no_log_prefix is used to feedback parser error, it need to be defined first
|
self.__no_log_prefix = parser.parse_args('no_log_prefix',False) #as no_log_prefix is used to feedback parser error, it need to be defined first
|
||||||
expression_name = parser.parse_args('expression_name',None)
|
expression_name = parser.parse_args('expression_name',None)
|
||||||
|
log_group = parser.parse_args('log_group',None)
|
||||||
|
self.__log_group = str(log_group if log_group is not None else expression_name or 'value')
|
||||||
if expression_name:
|
if expression_name:
|
||||||
self.__debug_log_prefixes.append(f"[{expression_name}]")
|
self.__debug_log_prefixes.append(f"[{expression_name}]")
|
||||||
|
|
||||||
@@ -96,14 +99,24 @@ class Evaluator():
|
|||||||
self.__debug_log_prefixes.pop()
|
self.__debug_log_prefixes.pop()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def __log_group_scope(self):
|
||||||
|
# SmartObject itself implements LoggerInterface, but many evaluators are
|
||||||
|
# constructed with only the app as their API and no logger_interface kwarg.
|
||||||
|
logger = self.__logger_interface or self.__appdaemon_api
|
||||||
|
group_scope = getattr(logger, 'log_group', None)
|
||||||
|
if callable(group_scope):
|
||||||
|
return group_scope(self.__log_group)
|
||||||
|
return nullcontext()
|
||||||
|
|
||||||
def evaluate(self,log = True):
|
def evaluate(self,log = True):
|
||||||
try: result = self.__evaluate()
|
with self.__log_group_scope():
|
||||||
except EvaluationException as e:
|
try: result = self.__evaluate()
|
||||||
self.__log(f"{e}",level = "ERROR")
|
except EvaluationException as e:
|
||||||
return None
|
self.__log(f"{e}",level = "ERROR")
|
||||||
if log:
|
return None
|
||||||
self.log_evaluation_result()
|
if log:
|
||||||
return result
|
self.log_evaluation_result()
|
||||||
|
return result
|
||||||
|
|
||||||
def log_callback_trigger_reason(self):
|
def log_callback_trigger_reason(self):
|
||||||
if self.__callback_trigger_reason_log_string:
|
if self.__callback_trigger_reason_log_string:
|
||||||
@@ -220,6 +233,10 @@ class Evaluator():
|
|||||||
self.__state_callbacks_handle = list()
|
self.__state_callbacks_handle = list()
|
||||||
|
|
||||||
def __trigger_callbacks(self,trigger_reason,triggered_from_activation = False):
|
def __trigger_callbacks(self,trigger_reason,triggered_from_activation = False):
|
||||||
|
with self.__log_group_scope():
|
||||||
|
return self.__trigger_callbacks_in_group(trigger_reason, triggered_from_activation)
|
||||||
|
|
||||||
|
def __trigger_callbacks_in_group(self,trigger_reason,triggered_from_activation = False):
|
||||||
has_log_trigger_reason = False
|
has_log_trigger_reason = False
|
||||||
has_evaluation_result = False
|
has_evaluation_result = False
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -761,4 +761,5 @@ class VirtualSensors():
|
|||||||
class VirtualSensorsApp(hass.Hass):
|
class VirtualSensorsApp(hass.Hass):
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
self.logger_interface = LoggerInterface(self.get_ad_api(),default_log = "virtualsensors_log")
|
self.logger_interface = LoggerInterface(self.get_ad_api(),default_log = "virtualsensors_log")
|
||||||
self.virtual_sensors = VirtualSensors(ad_api = self.get_ad_api(),logger_interface = self.logger_interface,yaml_block = self.args,args_to_ignore_in_validation = ['module','class','global_dependencies','priority','name','config_path'],app_name = self.name)
|
with self.logger_interface.log_group("App Initialization"):
|
||||||
|
self.virtual_sensors = VirtualSensors(ad_api = self.get_ad_api(),logger_interface = self.logger_interface,yaml_block = self.args,args_to_ignore_in_validation = ['module','class','global_dependencies','priority','name','config_path'],app_name = self.name)
|
||||||
Reference in new issue
Block a user