DuplicateMessageFilter in logback not available with logback version 1.2.3 used by Ignition?

@PGriffith, @Kevin.Herron
is there any plan to upgrade Ignition logback 1.2.3 to logback 1.3.x or 1.4.x ?

I try to add a builtin DuplicateMessageFilter to avoid some repetitive logs, but it has no effect and seem to be available only from logback 1.3.0 :sob:

Ignition/data/logback.xml

<configuration> 
    ...
    <turboFilter 
      class="ch.qos.logback.classic.turbo.DuplicateMessageFilter">
        <AllowedRepetitions>3</AllowedRepetitions>
		<CacheSize>100</CacheSize>
    </turboFilter>

</configuration>

https://logback.qos.ch/manual/filters.html#DuplicateMessageFilter

:thinking: seems to be available in logback-classic-1.2.3.jar used by Ignition 8.1

the issue must be relative to anything else ...

	loggerName = "ESSAI"
	log = system.util.getLogger(loggerName)
	for i in range(50):
		log.info("message repetitif")

produce all the message in the gateway logs.

No special log from logback at gateway restart

STATUS | wrapper  | 2023/08/10 11:49:08 | --> Wrapper Started as Service
STATUS | wrapper  | 2023/08/10 11:49:08 | Java Service Wrapper Standard Edition 64-bit 3.5.42
STATUS | wrapper  | 2023/08/10 11:49:08 |   Copyright (C) 1999-2020 Tanuki Software, Ltd. All Rights Reserved.
STATUS | wrapper  | 2023/08/10 11:49:08 |     http://wrapper.tanukisoftware.com
STATUS | wrapper  | 2023/08/10 11:49:08 |   Licensed to Inductive Automation for Inductive Automation
STATUS | wrapper  | 2023/08/10 11:49:08 | 
STATUS | wrapper  | 2023/08/10 11:49:08 | Launching a JVM...
INFO   | jvm 1    | 2023/08/10 11:49:09 | WrapperManager: Initializing...
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,357 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [data\\logback.xml] at [file:/C:/Program%20Files/Inductive%20Automation/Ignition/data/logback.xml]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,437 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,440 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [SysoutAppender]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,444 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,467 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.inductiveautomation.logging.SQLiteAppender]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,475 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [DB]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,638 |-INFO in ch.qos.logback.core.db.DataSourceConnectionSource@236f7bd2 - Driver name=SQLite JDBC
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,638 |-INFO in ch.qos.logback.core.db.DataSourceConnectionSource@236f7bd2 - Driver version=3.39.2.0
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,638 |-INFO in ch.qos.logback.core.db.DataSourceConnectionSource@236f7bd2 - supportsGetGeneratedKeys=true
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,674 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,676 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [SysoutAsync]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,676 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [SysoutAppender] to ch.qos.logback.classic.AsyncAppender[SysoutAsync]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,676 |-INFO in ch.qos.logback.classic.AsyncAppender[SysoutAsync] - Attaching appender named [SysoutAppender] to AsyncAppender.
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,676 |-INFO in ch.qos.logback.classic.AsyncAppender[SysoutAsync] - Setting discardingThreshold to 51
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,677 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,677 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [DBAsync]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [DB] to ch.qos.logback.classic.AsyncAppender[DBAsync]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.classic.AsyncAppender[DBAsync] - Attaching appender named [DB] to AsyncAppender.
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.classic.AsyncAppender[DBAsync] - Setting discardingThreshold to 51
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [SysoutAsync] to Logger[ROOT]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,678 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [DBAsync] to Logger[ROOT]
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,681 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,682 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3180ab5d - Registering current configuration as safe fallback point
INFO   | jvm 1    | 2023/08/10 11:49:09 | 11:49:09,721 |-INFO in ch.qos.logback.classic.jul.LevelChangePropagator@4deea449 - Propagating INFO level on Logger[ROOT] onto the JUL framework
INFO   | jvm 1    | 2023/08/10 11:49:09 | W [WebResourceManagerImpl        ] [09:49:09]: Unable to read "gateway.metroKeystoreAlias" gateway.xml property. Assuming metro keystore alias is: metro-key 
INFO   | jvm 1    | 2023/08/10 11:49:10 | I [g.WebServerManager            ] [09:49:09]: Starting setup 
INFO   | jvm 1    | 2023/08/10 11:49:10 | I [g.WebServerManager            ] [09:49:09]: Setup complete 
INFO   | jvm 1    | 2023/08/10 11:49:10 | I [g.WebServerManager            ] [09:49:10]: Starting up 

has anyone made this kind of filter work?

Did you solve the issue with DuplicateMessageFillter? Im facing same issue and wondering if someone finally find the solution.

No. I have not run some test with the last version of ignition. Logback has been upgraded since but I don't known if it change anything for this use case.