This is for 2.6.8+
Legacy log4j.properties
There were two log4 properties files depending on if logging to container or to file
log4j.properties (file)
Click here to expand...
#
# Copyright 2014 Internet2
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#${grouper.home} will be substituted with the System property "grouper.home", which must have a trailing \ or /
# depending on your OS. Of course you can use absolute paths if you prefer
#
# log4j Configuration
# $Id: log4j.example.properties,v 1.13 2009-12-18 13:56:51 tzeller Exp $
#
# Appenders
## Log messages to stderr
log4j.appender.grouper_stderr = org.apache.log4j.ConsoleAppender
log4j.appender.grouper_stderr.Target = System.err
log4j.appender.grouper_stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_stderr.layout.ConversionPattern = %d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
## Grouper API error logging
log4j.appender.grouper_error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.grouper_error.File = /opt/grouper/logs/grouper.log
log4j.appender.grouper_error.DatePattern = '.'yyyy-MM-dd
log4j.appender.grouper_error.MaxBackupIndex = 30
log4j.appender.grouper_error.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_error.layout.ConversionPattern = %d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
log4j.appender.grouper_daemon = org.apache.log4j.DailyRollingFileAppender
log4j.appender.grouper_daemon.File = /opt/grouper/logs/grouperDaemon.log
log4j.appender.grouper_daemon.DatePattern = '.'yyyy-MM-dd
log4j.appender.grouper_daemon.MaxBackupIndex = 30
log4j.appender.grouper_daemon.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_daemon.layout.ConversionPattern = %d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
log4j.appender.grouper_pspng = org.apache.log4j.DailyRollingFileAppender
log4j.appender.grouper_pspng.File = /opt/grouper/logs/pspng.log
log4j.appender.grouper_pspng.DatePattern = '.'yyyy-MM-dd
log4j.appender.grouper_pspng.MaxBackupIndex = 30
log4j.appender.grouper_pspng.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_pspng.layout.ConversionPattern = %d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
log4j.appender.grouper_provisioning = org.apache.log4j.DailyRollingFileAppender
log4j.appender.grouper_provisioning.File = /opt/grouper/logs/provisioning.log
log4j.appender.grouper_provisioning.DatePattern = '.'yyyy-MM-dd
log4j.appender.grouper_provisioning.MaxBackupIndex = 30
log4j.appender.grouper_provisioning.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_provisioning.layout.ConversionPattern = %d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
# Loggers
## Default logger; will log *everything*
log4j.rootLogger = ERROR, grouper_stderr, grouper_error
## All Internet2 (warn to grouper_error per default logger)
log4j.logger.edu.internet2.middleware = WARN
log4j.logger.edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog = DEBUG, grouper_daemon
log4j.additivity.edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog = false
log4j.logger.edu.internet2.middleware.grouper.pspng = INFO, grouper_pspng
log4j.additivity.edu.internet2.middleware.grouper.pspng = false
log4j.logger.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog = DEBUG, grouper_provisioning
log4j.additivity.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog = false
log4j.logger.edu.internet2.middleware.grouper.app.syncToGrouper.SyncToGrouperFromSqlDaemon = DEBUG
log4j.logger.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningLogCommands = DEBUG
log4j.logger.edu.internet2.middleware.grouper.stem.StemViewPrivilegeEsbListener = DEBUG
log4j.logger.edu.internet2.middleware.grouper.stem.StemViewPrivilegeFullDaemonLogic = DEBUG
#######################################################
##Optional settings for debug logs
#######################################################
## Hooks debug info
#log4j.logger.edu.internet2.middleware.grouper.hooks.examples.GroupTypeTupleIncludeExcludeHook = DEBUG
#log4j.logger.edu.internet2.middleware.grouper.Group = DEBUG
#log4j.logger.edu.internet2.middleware.grouper.hooks.examples.GroupTypeSecurityHook = DEBUG
# added by grouper-installer
log4j.logger.org.apache.tools.ant = WARN
log4j.logger.edu.internet2.middleware.grouper.util.PerformanceLogger = INFO
log4j.properties (container pipe)
Click here to expand...
#
# Copyright 2014 Internet2
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#${grouper.home} will be substituted with the System property "grouper.home", which must have a trailing \ or /
# depending on your OS. Of course you can use absolute paths if you prefer
#
# log4j Configuration
# $Id: log4j.example.properties,v 1.13 2009-12-18 13:56:51 tzeller Exp $
#
# Appenders
## Grouper API error logging
log4j.appender.grouper_error = org.apache.log4j.FileAppender
log4j.appender.grouper_error.file = /tmp/logpipe
log4j.appender.grouper_error.append = true
log4j.appender.grouper_error.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_error.layout.ConversionPattern = __GROUPER_LOG_PREFIX__;grouper_error.log;${ENV};${USERTOKEN};%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
#log4j.appender.grouper_error.layout.ConversionPattern = %d{ISO8601}: %m%n
log4j.appender.grouper_daemon = org.apache.log4j.DailyRollingFileAppender
log4j.appender.grouper_daemon.File = /tmp/logpipe
log4j.appender.grouper_daemon.append = true
log4j.appender.grouper_daemon.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_daemon.layout.ConversionPattern = __GROUPER_LOG_PREFIX__;grouperDaemon.log;${ENV};${USERTOKEN};%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
log4j.appender.grouper_pspng = org.apache.log4j.FileAppender
log4j.appender.grouper_pspng.File = /tmp/logpipe
log4j.appender.grouper_pspng.append = true
log4j.appender.grouper_pspng.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_pspng.layout.ConversionPattern = __GROUPER_LOG_PREFIX__;pspng.log;${ENV};${USERTOKEN};%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
log4j.appender.grouper_provisioning = org.apache.log4j.FileAppender
log4j.appender.grouper_provisioning.file = /tmp/logpipe
log4j.appender.grouper_provisioning.append = true
log4j.appender.grouper_provisioning.layout = org.apache.log4j.PatternLayout
log4j.appender.grouper_provisioning.layout.ConversionPattern = __GROUPER_LOG_PREFIX__;provisioning.log;${ENV};${USERTOKEN};%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n
# Loggers
## Default logger; will log *everything*
log4j.rootLogger = ERROR, grouper_error
## All Internet2 (warn to grouper_error per default logger)
log4j.logger.edu.internet2.middleware = WARN
log4j.logger.edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog = DEBUG, grouper_daemon
log4j.additivity.edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog = false
log4j.logger.edu.internet2.middleware.grouper.pspng = INFO, grouper_pspng
log4j.additivity.edu.internet2.middleware.grouper.pspng = false
log4j.logger.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog = DEBUG, grouper_provisioning
log4j.additivity.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog = false
log4j.logger.edu.internet2.middleware.grouper.app.syncToGrouper.SyncToGrouperFromSqlDaemon = DEBUG
log4j.logger.edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningLogCommands = DEBUG
log4j.logger.edu.internet2.middleware.grouper.stem.StemViewPrivilegeEsbListener = DEBUG
log4j.logger.edu.internet2.middleware.grouper.stem.StemViewPrivilegeFullDaemonLogic = DEBUG
#######################################################
##Optional settings for debug logs
#######################################################
## Hooks debug info
#log4j.logger.edu.internet2.middleware.grouper.hooks.examples.GroupTypeTupleIncludeExcludeHook = DEBUG
#log4j.logger.edu.internet2.middleware.grouper.Group = DEBUG
#log4j.logger.edu.internet2.middleware.grouper.hooks.examples.GroupTypeSecurityHook = DEBUG
# added by grouper-installer
log4j.logger.org.apache.tools.ant = WARN
log4j.logger.edu.internet2.middleware.grouper.util.PerformanceLogger = INFO
New log4j2.xml
This is in the container: https://github.internet2.edu/docker/grouper/tree/2.6.7.1/container_files/api
Click here to expand...
<?xml version="1.0" encoding="utf-8"?>
<Configuration status="info">
<Properties>
<Property name="layout">%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n</Property>
</Properties>
<Appenders>
<File name="CATALINA" fileName="/tmp/logpipe">
<PatternLayout pattern="tomee;catalina.out;${env:ENV};${env:USERTOKEN};${layout}"/>
</File>
<Console name="stderr" target="SYSTEM_ERR">
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;${ENV};${USERTOKEN};${layout}"/>
</Console>
<File name="__LOGPIPE__grouper_error" fileName="/tmp/logpipe">
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;grouper_error.log;${ENV};${USERTOKEN};${layout}"/>
</File>
<RollingFile name="__FILE__grouper_error" fileName="/opt/grouper/logs/grouper.log" filePattern="/opt/grouper/logs/grouper.log.%d{yyyy-MM-dd}" >
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;grouper_error.log;${ENV};${USERTOKEN};${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<File name="__LOGPIPE__grouper_daemon" fileName="/tmp/logpipe">
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;grouperDaemon.log;${ENV};${USERTOKEN};${layout}"/>
</File>
<RollingFile name="__FILE__grouper_daemon" fileName="/opt/grouper/logs/grouperDaemon.log" filePattern="/opt/grouper/logs/grouperDaemon.log.%d{yyyy-MM-dd}" >
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;grouperDaemon.log;${ENV};${USERTOKEN};${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<File name="__LOGPIPE__grouper_pspng" fileName="/tmp/logpipe">
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;pspng.log;${ENV};${USERTOKEN};${layout}"/>
</File>
<RollingFile name="__FILE__grouper_pspng" fileName="/opt/grouper/logs/pspng.log" filePattern="/opt/grouper/logs/pspng.log.%d{yyyy-MM-dd}" >
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;pspng.log;${ENV};${USERTOKEN};${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<File name="__LOGPIPE__grouper_provisioning" fileName="/tmp/logpipe">
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;provisioning.log;${ENV};${USERTOKEN};${layout}"/>
</File>
<RollingFile name="__FILE__grouper_provisioning" fileName="/opt/grouper/logs/provisioning.log" filePattern="/opt/grouper/logs/provisioning.log.%d{yyyy-MM-dd}" >
<PatternLayout pattern="__GROUPER_LOG_PREFIX__;provisioning.log;${ENV};${USERTOKEN};${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="30" />
</RollingFile>
<!--MOREAPPENDERS-->
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="grouper_error"/>
</Root>
<Logger name="org.apache.catalina" level="info" additivity="false">
<AppenderRef ref="CATALINA"/>
</Logger>
<Logger name="edu.internet2.middleware" level="warn" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog" level="debug" additivity="false">
<AppenderRef ref="grouper_daemon"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.pspng" level="info" additivity="false">
<AppenderRef ref="grouper_pspng"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog" level="debug" additivity="false">
<AppenderRef ref="grouper_provisioning"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.syncToGrouper.SyncToGrouperFromSqlDaemon" level="debug" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningLogCommands" level="debug" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.stem.StemViewPrivilegeEsbListener" level="debug" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.stem.StemViewPrivilegeFullDaemonLogic" level="debug" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="org.apache.tools.ant" level="warn" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.util.PerformanceLogger" level="info" additivity="false">
<AppenderRef ref="grouper_error"/>
</Logger>
<!--MORELOGGERS-->
</Loggers>
</Configuration>
Working example of log4j2.xml
<?xml version="1.0" encoding="utf-8"?>
<Configuration status="info">
<Properties>
<Property name="layout">%d{ISO8601}: [%t] %-5p %C{1}.%M(%L) - %x - %m%n</Property>
</Properties>
<Appenders>
<Console name="stderr" target="SYSTEM_ERR">
<PatternLayout pattern="${layout}"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="stderr"/>
</Root>
<Logger name="edu.internet2.middleware" level="warn" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.loader.GrouperLoaderLog" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.pspng" level="info" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningObjectLog" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.syncToGrouper.SyncToGrouperFromSqlDaemon" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningLogCommands" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.stem.StemViewPrivilegeEsbListener" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.stem.StemViewPrivilegeFullDaemonLogic" level="debug" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="org.apache.tools.ant" level="warn" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
<Logger name="edu.internet2.middleware.grouper.util.PerformanceLogger" level="info" additivity="false">
<AppenderRef ref="stderr"/>
</Logger>
</Loggers>
</Configuration>
Both files (log to files or logpipe) are merged into one config file.
These variables are substituted
- __GROUPER_LOG_PREFIX__ from the startup for various types of servers (ws/ui/daemon)
- __LOGPIPE__ removed if logging to log pipe container
- __FILE__ removed if logging to file
- <!--MORELOGGERS--> will be replaced with the contents of /opt/grouper/grouperWebapp/WEB-INF/classes/log4j2.additionalLoggers.xml.txt
- <!--MOREAPPENDERS--> will be replaced with the contents of /opt/grouper/grouperWebapp/WEB-INF/classes/log4j2.additionalAppenders.xml.txt
Customize the log4j2.xml
You can:
- (v2.6.8+) Put appenders in XML form in /opt/grouper/grouperWebapp/WEB-INF/classes/log4j2.additionalAppenders.xml.txt
- For loggers you have some options:
- You can overlay the /opt/grouper/grouperWebapp/WEB-INF/classes/log4j2.xml
- Note, include whatever is needed for tomee since it is copied to /opt/tomee/conf/log4j2.xml
Grouper and tomee share a config
The /opt/grouper/grouperWebapp/WEB-INF/classes/log4j2.xml is copied to /opt/tomee/conf/log4j2.xml
Log4j1 no longer needed
You no longer need to provide this VM argument
-Dlog4j1.compatibility=true