Felix.log DEBUG

#1

New install of Lucee 5.3.2.74-RC and I am again getting huge felix.log files. They are all DEBUG entries. Looking at this ticket:

https://luceeserver.atlassian.net/browse/LDEV-899

Micha states the following:

Problem was that log level was set to “debug”, changed to “error” now. not sure if we should add a check for the size of the file and clear it when it is bigger than a certain size.

in addition we added the possibility to set the log level an environment variable or system property (“felix.log.level”).

First, this seems to have been set back to DEBUG. Secondly, how/where/syntax can I set the felix.log.level environment or system property?

1 Like
#2

Does anybody know how/where to set this felix.log.level property?

#3

Just set it as an env var on your machine or pass it as a JVM arg to the server as

-Dfelix.log.level=whatever

Felix does not search directly for env vars or system props, it uses a config file, but Lucee does not expose the default config file, it’s baked into the jar. Sadly, Lucee does not expose some generic way by which devs can control all Felix settings like I wish it would. Instead, Lucee has hand-picked a small subset of Felix properties and they are checked in the CFMLEngineFactory class as part of the initEngine() method.

Here you can see an excerpt from that class that checks for this property and passed it along to a config object that is used to control Felix at run time.

	// Log Level
	int logLevel = 1; // 1 = error, 2 = warning, 3 = information, and 4 = debug
	String strLogLevel = getSystemPropOrEnvVar("felix.log.level", null);
	if (Util.isEmpty(strLogLevel)) strLogLevel = (String) config.get("felix.log.level");

	if (!Util.isEmpty(strLogLevel)) {
	    if ("0".equalsIgnoreCase(strLogLevel)) logLevel = 0;
	    else if ("error".equalsIgnoreCase(strLogLevel) || "1".equalsIgnoreCase(strLogLevel)) logLevel = 1;
	    else if ("warning".equalsIgnoreCase(strLogLevel) || "2".equalsIgnoreCase(strLogLevel)) logLevel = 2;
	    else if ("info".equalsIgnoreCase(strLogLevel) || "information".equalsIgnoreCase(strLogLevel) || "3".equalsIgnoreCase(strLogLevel)) logLevel = 3;
	    else if ("debug".equalsIgnoreCase(strLogLevel) || "4".equalsIgnoreCase(strLogLevel)) logLevel = 4;
	}
	config.put("felix.log.level", "" + logLevel);
#4

Thanks Brad - but I’ve tried that and the felix.log is still filling up with DEBUG entries.

I’ve tried the following settings passed in as Java options in Tomcat:
-Dfelix.log.level=1
-Dfelix.log.level=“1”
-Dfelix.log.level=“error”
-Dfelix.log.level=error

None change anything. I just did another completely fresh install of Lucee 5.3.1.102 on another new server being provisioned and same issue.

#5

Hmm, perhaps something else has changed. You’d probably have to compile a Lucee jar with some debugging in place to try and figure out which of that startup code is getting triggered.

#6

We are also experiencing this issue. A little more info on it. It does not happen on version 5.2.7.62. It starts to appear sometime after that. I have experienced it on 2 different 5.3 versions both 5.3.2.38 and 5.3.2.74. I have also tried to manually set the logging properties to error and it doesn’t seem to make a difference. I still see debugging output in the felix.log. Is this problem more widespread? Or has a fix possibly been released? I didnt see any other info on it besides the old ticket and this thread.

#7

I wish I knew a fix… I just deleted our felix.log at 128GB.

#8

this was meant to have been fixed in 5.3.2.75-SNAPSHOT as per

Regression: felix log growing

https://luceeserver.atlassian.net/browse/LDEV-2240

#9

I’m seeing this on the latest stable version 5.3.2.77 - others too according to the comments on that ticket.

#10

Does anyone know if it’s still happening with the latest snapshot, 5.3.3.56?

#11

I cannot check as the issue is happening on our Production server (which is 5.3.2.77)

I might add that, currently, this is what is being repeated every 5 seconds:

DEBUG [Tue Jun 18 12:45:27 PDT 2019]:
 not found by com.mysql.cj [58]

Everything is working just fine with the MySQL drivers on all of our apps as far as we can tell… just this DEBUG entry.

#12

Just spun up that version using CommandBox and yes, DEBUG entries are still being written on start up and seemingly whenever any code is run for the first time. They’re all complaining about various things not being found by various other things. A random example:

DEBUG [Wed Jun 19 10:24:32 BST 2019]:
META-INF/services/javax.media.jai.OperationRegistrySpi not found by org.lucee.imgscalr [55]

Over 1000 are written just starting the server and running a couple of test suites. If I re-run the same suites, no new log entries are written.