Felix.log DEBUG

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

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

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);

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.

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.

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.

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

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

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

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

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.

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.

Some good news, there’s been a fix for this, which requires updating the lucee loader, lucee.jar.

But the info was a little too vague so I have asked for a clarification

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

1 Like

I’ve tested the 5.3.3.57-SNAPSHOT and the problem seems to have gone away.

I’ve also tried “fixing” an existing instance running the current “stable” version 5.3.2.77 by replacing the /lib/lucee.jar with the one available in the 5.3.3.57 Snapshot download section, and that also seems to stop the log entries being written.

But I’m unclear as to whether this updated lucee.jar file can safely be applied to any 5.3.x instance. I haven’t noticed any issues but this 5.3.2.77 instance is just a local dev server running in CmdBox. I’m hesitant about applying it to a production server without an assurance that it’s safe to do so.

Having asked Micha about this on the Jira ticket, I have now noticed one rather significant issue: updating the lucee.jar has caused the core engine to be upgraded from 5.3.2.77 to 5.3.3.57-SNAPSHOT!

So it seems we’re still waiting for clear advice on what to do about existing 5.3.x installations where you’re not willing to upgrade to the latest snapshot.

He’s working on a byte code patch approach for the loader, which means you won’t have to update the loader manually.

We have hit by this bug after migrate to lucee 5.3.2.77, just a quick&dyrty fix for this: create a directory named felix.log:

# stop lucee server
cd <lucee-server-dir>/context/logs
rm felix.log
mkdir felix.log 
# chown to server user, eg: 
chown tomcat8 felix.log
# start lucee server

Run the following as root

/opt/lucee/lucee_ctl stop
cd /opt/lucee/tomcat/logs
rm felix.log
ln -s /dev/null felix.log
/opt/lucee/lucee_ctl start