Unable changing log level in OH3.3

  • Platform information:
    • Hardware: rasPi 3B+/1G
    • OS: openhabian image
    • Java Runtime Environment: do not know
    • openHAB version: 3.3
  • Issue of the topic:
    i see a lot of INFO entries in /var/log/openhab/openhab.log
    editing the log config /var/lib/openhab/etc/log4j2.xml and changing INFO levels to WARNING levels changes nothing. all INFO entries are written to the openhab.log file.

Use the console to change the log level

The log level defined in the console will define what log messages are generated by openhab.
The settings in the log4j config will only determine which already generated log messages will be written to a file

If you only want edit the config file, maybe share your version

Ok, thanks for that info. I’m not very familiar with the console.
I don’t want to write the logs to the openhab.log file
I would like to know if the behavior I’m reporting is a bug or if I’m doing something wrong or don’t understand.
Here is some of my content of /var/lib/openhab/etc/log4j2.xml where I tried zum change “INFO” to “WARN”

                <!-- openHAB specific logger configuration -->

                <Logger level="INFO" name="org.openhab"/>

                <Logger level="ERROR" name="openhab.event.ItemStateEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ChannelDescriptionChangedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.InboxUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.StartlevelEvent"/>
                <Logger level="ERROR" name="openhab.event.AddonEvent"/>

                <Logger additivity="false" level="INFO" name="openhab.event">
                        <AppenderRef ref="EVENT"/>
                        <AppenderRef ref="OSGI"/>
                </Logger>

Thanks for your support and and please don’t get mad at stupid questions

Well, if those are the only entries you’ve changed, you’ve only changes the stuff that logs to events.log, not openhab.log. You need to change the default level for the “org.openhab” Logger which will change the default level for everything that logs to openhab.log. Or if you only want to change some parts, you need to create a new entry for that part and set the level as appropriate.

When you issue commands in the console like @Matze0211 suggests, it adds a line to log4j2.xml for you.

If I understand you correctly, I have to make the following change to suppress the writing of the info logs in openhab.log:

<Logger level="WARN" name="org.openhab"/>

That will change the log level for anything that starts with “org.openhab”.

ok, I changed

 <Logger level="INFO" name="org.openhab"/>

to

<Logger level="WARN" name="org.openhab"/>

and stored /var/lib/openhab/etc/log4j2.xml

but my openhab.log runs with messages like:

2022-09-08 12:29:35.096 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNs31-1 updated: IDLE
2022-09-08 12:29:35.097 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'execcommand_Args' changed from Number LC3K2TEMPWANNE '22.25930175321374804298102390021' to Number LC3KWATEMPAUSSEN '22.98000000000000042632564145606'
2022-09-08 12:29:35.098 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNsV32-1 updated: IDLE
2022-09-08 12:29:35.124 [INFO ] [openhab.event.ItemStateEvent        ] - Item 'execcommand_Run' updated to OFF
2022-09-08 12:29:35.126 [INFO ] [openhab.event.ItemStateEvent        ] - Item 'execcommand_Out' updated to
2022-09-08 12:29:35.128 [INFO ] [g.openhab.core.model.script.ExecOut:] - Script Raw result:
2022-09-08 12:29:35.128 [INFO ] [g.openhab.core.model.script.ExecOut:] - Script has completed.
2022-09-08 12:29:35.130 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'execcommand_Run' changed from ON to OFF
2022-09-08 12:29:35.131 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNSsV34-1 updated: RUNNING
2022-09-08 12:29:35.132 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNsV33-1 updated: RUNNING
2022-09-08 12:29:35.132 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNsV33-1 updated: IDLE
2022-09-08 12:29:35.133 [INFO ] [openhab.event.RuleStatusInfoEvent   ] - ExecToNSsV34-1 updated: IDLE

what am i doing wrong?

Again, there are *two" logs, openhab.log and events.log. As i mentioned above, the changes you originally made only affects events.log. The changes you must recently made only affects openhab.log. The log you just posted is events.log.

Sorry, but my posting is content of openhab.log
My eventls.log ist empty!
I am using an openhabian Image:

###############################################################################
###############  openhabian  ##################################################
###############################################################################
##        Ip = 10.1.0.21
##   Release = Raspbian GNU/Linux 10 (buster)
##    Kernel = Linux 5.10.103-v7+
##  Platform = Raspberry Pi 3 Model B Plus Rev 1.3
##    Uptime = 0 day(s). 19:44:29
## CPU Usage = 19.49% avg over 4 cpu(s) (4 core(s) x 1 socket(s))
##  CPU Load = 1m: 2.19, 5m: 2.21, 15m: 2.16
##    Memory = Free: 0.02GB (3%), Used: 0.92GB (97%), Total: 0.94GB
##      Swap = Free: 2.14GB (96%), Used: 0.09GB (4%), Total: 2.24GB
##      Root = Free: 50.10GB (89%), Used: 5.76GB (11%), Total: 58.27GB
##   Updates = 0 apt updates available.
##  Sessions = 1 session(s)
## Processes = 122 running processes of 32768 maximum processes
###############################################################################

                          _   _     _     ____   _
  ___   ___   ___   ___  | | | |   / \   | __ ) (_)  ____   ___
 / _ \ / _ \ / _ \ / _ \ | |_| |  / _ \  |  _ \ | | / _  \ / _ \
| (_) | (_) |  __/| | | ||  _  | / ___ \ | |_) )| || (_) || | | |
 \___/|  __/ \___/|_| |_||_| |_|/_/   \_\|____/ |_| \__|_||_| | |
      |_|                  openHAB 3.3.0 - Release Build

And I did not make changes or configs in relation to log-files.

Then you’ve made some other changes to log4j2.xml because all of those log entries come from the event bus and normally you’d not see any of those in openhab.log.

Thank you for your support. I’ve been using this openhabian image for many months but I don’t remember ever changing this file. Perhaps you can help me to identify where the problem lies. Here is the entire file of my image.
Many thanks for your help!

[22:41:33] root@openhabian:/home/openhabian# cat /var/lib/openhab/etc/log4j2.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Configuration monitorInterval="10">

        <Appenders>
                <!-- Console appender not used by default (see Root logger AppenderRefs) -->
                <Console name="STDOUT">
                        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
                </Console>

                <!-- Rolling file appender -->
                <RollingFile fileName="${sys:openhab.logdir}/openhab.log" filePattern="${sys:openhab.logdir}/openhab.log.%i.gz" name="LOGFILE">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
                        <Policies>
                                <OnStartupTriggeringPolicy/>
                                <SizeBasedTriggeringPolicy size="16 MB"/>
                        </Policies>
                        <DefaultRolloverStrategy max="7"/>
                </RollingFile>

                <!-- Event log appender -->
                <RollingRandomAccessFile fileName="${sys:openhab.logdir}/events.log" filePattern="${sys:openhab.logdir}/events.log.%i.gz" name="EVENT">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
                        <Policies>
                                <OnStartupTriggeringPolicy/>
                                <SizeBasedTriggeringPolicy size="16 MB"/>
                        </Policies>
                        <DefaultRolloverStrategy max="7"/>
                </RollingRandomAccessFile>

                <!-- Audit file appender -->
                <RollingRandomAccessFile fileName="${sys:openhab.logdir}/audit.log" filePattern="${sys:openhab.logdir}/audit.log.%i.gz" name="AUDIT">
                        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
                        <Policies>
                                <OnStartupTriggeringPolicy/>
                                <SizeBasedTriggeringPolicy size="8 MB"/>
                        </Policies>
                        <DefaultRolloverStrategy max="7"/>
                </RollingRandomAccessFile>

                <!-- OSGi appender -->
                <PaxOsgi filter="*" name="OSGI"/>
        </Appenders>

        <Loggers>
                <!-- Root logger configuration -->
                <Root level="WARN">
                        <AppenderRef ref="LOGFILE"/>
                        <AppenderRef ref="OSGI"/>
                </Root>

                <!-- Karaf Shell logger -->
                <Logger level="OFF" name="org.apache.karaf.shell.support">
                        <AppenderRef ref="STDOUT"/>
                </Logger>

                <!-- Security audit logger -->
                <Logger additivity="false" level="INFO" name="org.apache.karaf.jaas.modules.audit">
                        <AppenderRef ref="AUDIT"/>
                </Logger>

                <!-- openHAB specific logger configuration -->

                <Logger level="WARN" name="org.openhab"/>

                <Logger level="ERROR" name="openhab.event.ItemStateEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ChannelDescriptionChangedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.InboxUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.StartlevelEvent"/>
                <Logger level="ERROR" name="openhab.event.AddonEvent"/>

                <Logger additivity="false" level="INFO" name="openhab.event">
                        <AppenderRef ref="EVENT"/>
                        <AppenderRef ref="OSGI"/>
                </Logger>

                <!-- openHAB user based script logger configuration -->
                <Logger level="TRACE" name="org.openhab.automation.script" />

                <Logger level="ERROR" name="javax.jmdns"/>
                <Logger level="ERROR" name="org.jupnp"/>

                <!-- This suppresses all Maven download issues from the log when doing feature installations -->
                <!-- as we are logging errors ourselves in a nicer way anyhow. -->
                <Logger level="ERROR" name="org.ops4j.pax.url.mvn.internal.AetherBasedResolver"/>

                <!-- Filters known issues of pax-web (issue link to be added here). -->
                <!-- Can be removed once the issues are resolved in an upcoming version. -->
                <Logger level="OFF" name="org.ops4j.pax.web.pax-web-runtime"/>

                <!-- Filters known issues of lsp4j, see -->
                <!-- https://github.com/eclipse/smarthome/issues/4639 -->
                <!-- https://github.com/eclipse/smarthome/issues/4629 -->
                <!-- https://github.com/eclipse/smarthome/issues/4643 -->
                <!-- Can be removed once the issues are resolved in an upcoming version. -->
                <Logger level="OFF" name="org.eclipse.lsp4j"/>

                <!-- Filters warnings for events that could not be delivered to a disconnected client. -->
                <Logger level="ERROR" name="org.apache.cxf.jaxrs.sse.SseEventSinkImpl"/>

                <!-- Filters known issues of KarServiceImpl, see -->
                <!-- https://github.com/openhab/openhab-distro/issues/519#issuecomment-351944506 -->
                <!-- Can be removed once the issues are resolved in an upcoming version. -->
                <Logger level="ERROR" name="org.apache.karaf.kar.internal.KarServiceImpl"/>

                <!-- Filters warnings about unavailable ciphers when JCE is not installed, see -->
                <!-- https://github.com/openhab/openhab-distro/issues/999 -->
                <Logger level="ERROR" name="org.apache.karaf.shell.ssh.SshUtils"/>

                <!-- Filters known issues of javax.mail, see -->
                <!-- https://github.com/openhab/openhab-addons/issues/5530 -->
                <Logger level="ERROR" name="javax.mail"/>

                <!-- Filters disconnection warnings of the ChromeCast Java API, see -->
                <!-- https://github.com/openhab/openhab-addons/issues/3770 -->
                <Logger level="ERROR" name="su.litvak.chromecast.api.v2.Channel"/>

                <!-- Added by Karaf to prevent debug logging loops, see -->
                <!-- https://issues.apache.org/jira/browse/KARAF-5559 -->
                <Logger level="WARN" name="org.apache.sshd"/>
        </Loggers>

</Configuration>

Based on this log4j2.xml file it is impossible for those log statements to be in openhab.log. Where are you looking at the logs?

You have two appending file loggers, one named LOGFILE and the other named EVENT. LOGFILE logs to openhab.log. EVENT logs to events.log.

Everything that starts with openhab.event gets logged to EVENT and OSGI (OSGI is the Karaf console).

Everything else gets logged to LOGFILE.

Note1: that you probably have to restart OH to pick up changes to the logger level unless you make the change through the Karaf Console.

Note2: Frontail shows both log files.

I am using the command line:

tail -f /var/log/openhab/openhab.log

and there I see the posted log entries

the file

/var/log/openhab/events.log

is empty

my log directory it looks like:

[23:06:02] root@openhabian:/home/openhabian# ls -lh /var/log/openhab/
total 15M
-rw-rwSr-- 1 openhab openhab      0 Sep 26  2021 audit.log
-rw-rwSr-- 1 openhab openhab      0 Sep 26  2021 events.log
-rw-r--r-- 1 openhab openhabian 15M Sep  8 23:06 openhab.log
-rwxr-xr-x 1 openhab openhab      0 Jun 27 08:19 Readme.txt

ad Note 1: I restarted OH many times since I am using this image
ad Note 2: I have never seen Frontail in the Browser since switching vom OH2 to OH3.

Once again: Thank you for youu support!

I can’t help any further. Based on that log4j2.xml file what you describe should not be possible. I have no further ideas to offer. There is something overriding the events logging so they end up being logged to the default logger.

Unfortunately I am not a Linux system specialist but a user of automation tools.
When I have time I will load a new openhabian image and install my tools on it to see what causes this unwanted effect!
if i find something i will share my knowledge here.

Many Thanks.

What is in your org.ops4j.pax.logging.cfg file?

Should be something like:

org.ops4j.pax.logging.log4j2.config.file=${karaf.etc}/log4j2.xml

No, here is the content:

# Common pattern layout for appenders
#log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n

# Root logger
log4j2.rootLogger.level = INFO
log4j2.rootLogger.appenderRefs = out, osgi
log4j2.rootLogger.appenderRef.out.ref = LOGFILE
log4j2.rootLogger.appenderRef.osgi.ref = OSGI

# Karaf Shell logger
log4j2.logger.shell.name = org.apache.karaf.shell.support
log4j2.logger.shell.level = OFF
log4j2.logger.shell.appenderRefs = stdout
log4j2.logger.shell.appenderRef.stdout.ref = STDOUT

# Security audit logger
log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit
log4j2.logger.audit.level = INFO
log4j2.logger.audit.additivity = false
log4j2.logger.audit.appenderRefs = audit
log4j2.logger.audit.appenderRef.audit.ref = AUDIT

# openHAB specific logger configuration

log4j2.logger.openhab.name = org.openhab
log4j2.logger.openhab.level = INFO

log4j2.logger.smarthome.name = org.eclipse.smarthome
log4j2.logger.smarthome.level = INFO

log4j2.logger.smarthomeItemStateEvent.name = smarthome.event.ItemStateEvent
log4j2.logger.smarthomeItemStateEvent.level = ERROR
log4j2.logger.smarthomeItemAddedEvent.name = smarthome.event.ItemAddedEvent
log4j2.logger.smarthomeItemAddedEvent.level = ERROR
log4j2.logger.smarthomeItemRemovedEvent.name = smarthome.event.ItemRemovedEvent
log4j2.logger.smarthomeItemRemovedEvent.level = ERROR
log4j2.logger.smarthomeThingStatusInfoEvent.name = smarthome.event.ThingStatusInfoEvent
log4j2.logger.smarthomeThingStatusInfoEvent.level = ERROR
log4j2.logger.smarthomeThingAddedEvent.name = smarthome.event.ThingAddedEvent
log4j2.logger.smarthomeThingAddedEvent.level = ERROR
log4j2.logger.smarthomeThingRemovedEvent.name = smarthome.event.ThingRemovedEvent
log4j2.logger.smarthomeThingRemovedEvent.level = ERROR
log4j2.logger.smarthomeInboxUpdatedEvent.name = smarthome.event.InboxUpdatedEvent
log4j2.logger.smarthomeInboxUpdatedEvent.level = ERROR

log4j2.logger.events.name = smarthome.event
log4j2.logger.events.level = INFO
log4j2.logger.events.additivity = false
log4j2.logger.events.appenderRefs = event
log4j2.logger.events.appenderRef.event.ref = EVENT
log4j2.logger.events.appenderRef.osgi.ref = OSGI

log4j2.logger.jupnp.name = org.jupnp
log4j2.logger.jupnp.level = ERROR

log4j2.logger.jmdns.name = javax.jmdns
log4j2.logger.jmdns.level = ERROR

log4j2.logger.paperui.name = org.openhab.ui.paper
log4j2.logger.paperui.level = WARN
log4j2.logger.paperuiint.name = org.openhab.ui.paper.internal
log4j2.logger.paperuiint.level = INFO

# This suppresses all Maven download issues from the log when doing feature installations
# as we are logging errors ourselves in a nicer way anyhow.
log4j2.logger.paxurl.name = org.ops4j.pax.url.mvn.internal.AetherBasedResolver
log4j2.logger.paxurl.level = ERROR

# Filters known issues of pax-web (issue link to be added here).
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.paxweb.name = org.ops4j.pax.web.pax-web-runtime
log4j2.logger.paxweb.level = OFF

# Filters known issues of lsp4j, see
# https://github.com/eclipse/smarthome/issues/4639
# https://github.com/eclipse/smarthome/issues/4629
# https://github.com/eclipse/smarthome/issues/4643
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.lsp4j.name = org.eclipse.lsp4j
log4j2.logger.lsp4j.level = OFF

# Filters known issues of KarServiceImpl, see
# https://github.com/openhab/openhab-distro/issues/519#issuecomment-351944506
# Can be removed once the issues are resolved in an upcoming version.
log4j2.logger.karservice.name = org.apache.karaf.kar.internal.KarServiceImpl
log4j2.logger.karservice.level = ERROR

# Filters warnings about unavailable ciphers when JCE is not installed, see
# https://github.com/openhab/openhab-distro/issues/999
log4j2.logger.sshutils.name = org.apache.karaf.shell.ssh.SshUtils
log4j2.logger.sshutils.level = ERROR

# Filters known issues of javax.mail, see
# https://github.com/openhab/openhab2-addons/issues/5530
log4j2.logger.javaxmail.name = javax.mail
log4j2.logger.javaxmail.level = ERROR

# Appenders configuration

# Console appender not used by default (see log4j2.rootLogger.appenderRefs)
log4j2.appender.console.type = Console
log4j2.appender.console.name = STDOUT
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n

# Rolling file appender
log4j2.appender.out.type = RollingRandomAccessFile
log4j2.appender.out.name = LOGFILE
log4j2.appender.out.fileName = ${openhab.logdir}/openhab.log
log4j2.appender.out.filePattern = ${openhab.logdir}/openhab.log.%i
log4j2.appender.out.immediateFlush = true
log4j2.appender.out.append = true
log4j2.appender.out.layout.type = PatternLayout
log4j2.appender.out.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n
log4j2.appender.out.policies.type = Policies
log4j2.appender.out.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.out.policies.size.size = 16MB

# Event log appender
log4j2.appender.event.type = RollingRandomAccessFile
log4j2.appender.event.name = EVENT
log4j2.appender.event.fileName = ${openhab.logdir}/events.log
log4j2.appender.event.filePattern = ${openhab.logdir}/events.log.%i
log4j2.appender.event.immediateFlush = true
log4j2.appender.event.append = true
log4j2.appender.event.layout.type = PatternLayout
log4j2.appender.event.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-26.26c] - %m%n
log4j2.appender.event.policies.type = Policies
log4j2.appender.event.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.event.policies.size.size = 16MB

# Audit file appender
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AUDIT
log4j2.appender.audit.fileName = ${openhab.logdir}/audit.log
log4j2.appender.audit.filePattern = ${openhab.logdir}/audit.log.%i
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

# OSGi appender
log4j2.appender.osgi.type = PaxOsgi
log4j2.appender.osgi.name = OSGI
log4j2.appender.osgi.filter = *
log4j2.logger.org_apache_sshd.level = ERROR
log4j2.logger.org_apache_sshd.name = org.apache.sshd
log4j2.logger.org_openhab_core_model_script_heartbeat.level = DEBUG
log4j2.logger.org_openhab_core_model_script_heartbeat.name = org.openhab.core.model.script.HeartBeat

I think that may be the cause of your issue. The changes to log4j2.xml are not being used as the file is not referenced anywhere.

Keep a backup of the current org.ops4j.pax.logging.cfg and replace contacts with:

org.ops4j.pax.logging.log4j2.config.file=${karaf.etc}/log4j2.xml

and see what the result is.

This may require an OH restart.