Externalizing Log4j2 Not Working on Cas 4.2.1

325 views
Skip to first unread message

Matt S.

unread,
Apr 28, 2016, 9:12:40 AM4/28/16
to CAS Community
Hi,

On Cas server 4.2.1, it doesn't seem to be using the property in cas.properties for externalizing the log4j2.xml file.

This was working in 4.1.x, for example setting log4j.config.location=file:///etc/cas/log4j2.xml in an externalized cas.properties file, but it doesn't seem to be picking it up in 4.2 as none of the log files are being created.

If I just copy the log4j2.xml into my overlay in WEB-INF/classes/, it does seem to work, but at least that is expected since it's the default location.

I also noticed that in the sample Overlay linked in documentation, the cas.properties file does not contain any property related to the log4j2 file.
Is there a different way this is supposed to be setup to externalize?

The logging section of the documentation only mentions a Java virtual machine argument to define log4j.configurationFile for externalization.
I also tried using a property name of "log4j.configurationFile" in cas.properties but that didn't seem to work.

Any suggestions?


Thanks,
Matt

Misagh Moayyed

unread,
Apr 28, 2016, 10:21:31 AM4/28/16
to CAS Community

--
You received this message because you are subscribed to the Google Groups "CAS Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cas-user+u...@apereo.org.
To post to this group, send email to cas-...@apereo.org.
Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.
To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/45ef2ef3-f311-4465-9374-cb746fae89f8%40apereo.org.
For more options, visit https://groups.google.com/a/apereo.org/d/optout.

Dmitriy Kopylenko

unread,
Apr 28, 2016, 11:01:53 AM4/28/16
to Misagh Moayyed, CAS Community
Yes, as indicated in the doc that Misagh referenced, the ‘log4j.configurationFile’ is a system level JVM property that is not set in your cas.properties file. This is the change in 4.2+. You’d need to explicitly pass this system property to your JVM runtime with -D prefix. Here’s for example an excerpt from Tomcat server’s (where cas.war is deployed) setenv.sh that sets those system properties:

#CAS logging settings
export JAVA_OPTS="$JAVA_OPTS -Dlog4j.configurationFile=/etc/cas/log4j2.xml -DloggerFactory=org.apache.logging.slf4j.Log4jLoggerFactory

Best,
D.

Matt S.

unread,
Apr 28, 2016, 12:06:36 PM4/28/16
to CAS Community, mmoa...@unicon.net, dkopy...@unicon.net
Thanks, Dmitriy.  That makes sense.

The only issue now is that Tomcat doesn't seem to be using the "setenv.sh" script.  From what I've found, this seems to be because we are using the tomcat 7 server from the yum repo on Centos 7 as opposed to the manually downloaded version of the server, so there was no startup scripts or setenv.sh script, but I tried to create setenv.sh in the Tomcat home/bin directory.

I haven't found anything yet regarding how to tell Tomcat to use setenv.sh.  Is there another way to set this in Tomcat?

Thanks,
Matt

Misagh Moayyed

unread,
Apr 28, 2016, 12:11:09 PM4/28/16
to CAS Community

startup.sh or catalina.sh will do.

 

Dmitriy Kopylenko

unread,
Apr 28, 2016, 12:12:52 PM4/28/16
to Misagh Moayyed, CAS Community
Yes that, and also Tomcat SHOULD automatically pick up $TC_HOME/bin/setenv.sh

D.

Chris Peck

unread,
Apr 28, 2016, 12:27:20 PM4/28/16
to CAS Community
Or, follow these directions:
Which basically says to edit /usr/share/tomcat/conf/tomcat.conf
-c


Matt S.

unread,
Apr 28, 2016, 2:32:15 PM4/28/16
to CAS Community
Thanks all!  That seems to work using tomcat.conf.

I was hoping to do it similarly in tomcat.conf by adding a section just for the CAS logging options instead of appending the properties an already long string of options, since the value of "JAVA_OPTS" can grow and get pretty long if many options are defined.

Thanks,
Matt

Bryce Nordgren

unread,
Apr 28, 2016, 8:00:08 PM4/28/16
to CAS Community
I've been fighting this same battle today, also on Centos 7 with tomcat installed via yum.

My issue is that I can't find cas.log anywhere. I can "journalctl -u tomcat" to see the output, but I can't find the file. Where is it putting your cas.log?

Bryce
Reply all
Reply to author
Forward
0 new messages