Problems with my own Logfile

Hello,

I tried to create my own log file.

I made the following entries in the log4j2.xml.

		<!-- MyLog file appender -->
		<RollingRandomAccessFile fileName="${sys:openhab.logdir}/mylog.log" filePattern="${sys:openhab.logdir}/mylog.log.%i.gz" name="MYLOG">
			<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>
		<!-- MyLog logger -->
		<Logger name="MYLOG" additivity="false" level="INFO">
			<AppenderRef ref="MYLOG"/>
		</Logger>

I’m now trying to output a value in a rule

logInfo("MYLOG", "this is a test") 

The mylog.log file is created but nothing is output there. the entries only end up in the openhab.log. What have I forgotten? What is wrong?

Thanks

log commands (at least from DSL) will always log to org.openhab.core.model.script.<loggername>, where <loggername> is replaced by the first string given in the log command.
I’m not sure if you need to add some configuration to avoid double logging (your log file and openhab.log), but I’m pretty sure you have to set the absolute path as logger name, like this:

<!-- MyLog logger -->
		<Logger name="org.openhab.core.model.script.MYLOG" additivity="false" level="INFO">
			<AppenderRef ref="MYLOG"/>
		</Logger>

Thanks for the help. The message now arrives in my output file.

The message now only appears in this file and not in the openhab.log - thats ok!

But after changing the log4j2.xlm file I had following message at openhab.log. Can I “read over” them or do I have to correct something?

[image]

2024-03-07 15:19:10.834 [ERROR] [t.ide.server.concurrent.WriteRequest] - Error during request: 
java.util.concurrent.CompletionException: java.lang.RuntimeException: Cannot create a resource for 'java:/Objects/org.openhab.core.model.script.actions.Log'; a registered resource factory is needed
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) ~[?:?]
	at java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1527) ~[?:?]
	at java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1517) ~[?:?]
	at java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1519) ~[?:?]
	at java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1519) ~[?:?]
	at java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1519) ~[?:?]
	at java.util.concurrent.CompletableFuture.allOf(CompletableFuture.java:2419) ~[?:?]
	at org.eclipse.xtext.ide.server.concurrent.RequestManager.cancel(RequestManager.java:114) ~[?:?]
	at org.eclipse.xtext.ide.server.concurrent.RequestManager.runWrite(RequestManager.java:80) ~[?:?]
	at org.eclipse.xtext.ide.server.LanguageServerImpl.initialize(LanguageServerImpl.java:235) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$recursiveFindRpcMethods$0(GenericEndpoint.java:65) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) ~[?:?]
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.RuntimeException: Cannot create a resource for 'java:/Objects/org.openhab.core.model.script.actions.Log'; a registered resource factory is needed
	at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:263) ~[?:?]
	at org.eclipse.xtext.ide.server.ProjectManager.getResource(ProjectManager.java:181) ~[?:?]
	at org.eclipse.xtext.ide.server.WorkspaceManager.read(WorkspaceManager.java:470) ~[?:?]
	at org.eclipse.xtext.ide.server.WorkspaceManager.doRead(WorkspaceManager.java:454) ~[?:?]
	at org.eclipse.xtext.ide.server.findReferences.WorkspaceResourceAccess.readOnly(WorkspaceResourceAccess.java:36) ~[?:?]
	at org.eclipse.xtext.ide.server.symbol.DocumentSymbolService.doRead(DocumentSymbolService.java:318) ~[?:?]
	at org.eclipse.xtext.ide.server.symbol.DocumentSymbolService.getDefinitions(DocumentSymbolService.java:110) ~[?:?]
	at org.eclipse.xtext.ide.server.symbol.DocumentSymbolService.getDefinitions(DocumentSymbolService.java:96) ~[?:?]
	at org.eclipse.xtext.ide.server.LanguageServerImpl.lambda$28(LanguageServerImpl.java:633) ~[?:?]
	at org.eclipse.xtext.ide.server.WorkspaceManager.doRead(WorkspaceManager.java:458) ~[?:?]
	at org.eclipse.xtext.ide.server.LanguageServerImpl.definition(LanguageServerImpl.java:632) ~[?:?]
	at org.eclipse.xtext.ide.server.LanguageServerImpl.definition(LanguageServerImpl.java:620) ~[?:?]
	at org.eclipse.xtext.ide.server.LanguageServerImpl.lambda$27(LanguageServerImpl.java:611) ~[?:?]
	at org.eclipse.xtext.ide.server.concurrent.ReadRequest.lambda$1(ReadRequest.java:66) ~[?:?]
	... 5 more

Hmm, so you did use the path org.openhab.core.model.script.actions.Log as logger name??