Here is something we used to create alarms during specific events that we could not get optics on from the client. This can be used to write values to tags when specific loggers are used, but it should be easy to modify to write to a database.
from ch.qos.logback.classic import Level
from ch.qos.logback.core import AppenderBase
from org.slf4j import LoggerFactory
class TagAppender(AppenderBase):
def doAppend(self,event):
if event.level == Level.ERROR:
system.tag.writeBlocking(["[default]SomethingIsMessedUpAlarm"],[True])
if event.level == Level.WARN:
system.tag.writeBlocking(["[default]SomethingIsSortaMessedUpAlarm"],[True])
appender = TagAppender()
appender.name = "SomethingIsMangled"
appender.context = LoggerFactory.getILoggerFactory()
for _logger in ["tags.storage.internaljson","com.inductiveautomation.ignition.gateway.localdb.sqlite.SingleConnectionDatasource","perspective.actions.script"]:
logger = system.util.getLogger(_logger)
logger.getLoggerSLF4J().addAppender(appender)