Sailpoint.log file is not being generated in the defined location

SailPoint IIQ 8.4

The rolling log file path is correctly configured in the SailPoint IIQ log4j2.properties file; however, the sailpoint.log file is not being generated in the defined location. Please help resolve this issue.

appender.RollingFile.type=RollingFile
appender.RollingFile.name=file
appender.RollingFile.fileName=/app/tomcat9/logs/sailpoint.log
appender.RollingFile.filePattern=/app/tomcat9/logs/sailpoint-%d{yyyy-MM-dd}-%i.log.gz
appender.RollingFile.layout.type=PatternLayout
appender.RollingFile.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n
appender.RollingFile.policies.type=Policies
appender.RollingFile.policies.size.type=SizeBasedTriggeringPolicy
appender.RollingFile.policies.size.size=50MB
appender.RollingFile.strategy.type=DefaultRolloverStrategy
appender.RollingFile.strategy.max=5

Hi @pmr542

Please provide the full file path in appender.RollingFile.fileName, for example:
C:/Users/Madhava/Downloads/Sailpoint/IIQ/Sources/Logs/Logs.log.

Also, check whether the following line is uncommented:
rootLogger.appenderRef.file.ref=file

Please make sure you have file permissions to that path for the account running Tomcat.

The issue where the sailpoint.log file is not generated despite a correct log4j2.properties configuration is typically caused by one of three things:

  1. missing root logger references
  2. directory permission issues, or incorrect path separators.

Missing Reference - Add rootLogger.appenderRef.file.ref=file

I have added my properties file for your reference, it should helps for you to resolve your problem.

#
# (c) Copyright 2018 SailPoint Technologies, Inc., All Rights Reserved.
#
# NOTE: The syntax of this file is different than what it was for 
#       IdentityIQ 7.3 and earlier.  These syntax changes are due to 
#       our upgrade to log4j version 2.
#
#       See https://logging.apache.org/log4j/2.x/manual/configuration.html
#       for description of the new syntax.
#

######################################
## Global log4j2 properties
######################################
name=identityiq_default
status=warn
monitorInterval=20
packages=sailpoint.api.logging

#######################################
## Appenders
#######################################

### direct log messages to stdout ###
appender.stdout.type=Console
appender.stdout.name=stdout
appender.stdout.target=SYSTEM_OUT
appender.stdout.layout.type=PatternLayout
appender.stdout.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n

# CRLF log injection can reduce the value of application logs. CRLF log injection can
# be neutralized by applying log4j2's replace conversion pattern to a log message. If
# log4j2 environment is set up to use the PatternLayout, then while in stdout or file
# write, an administrator can use the 'replace' conversion pattern to a log message to
# neutralize CRLF sequence to double underscore. In the example below, the inner replace
# pattern replaces a sequence of line feed (\n) and carriage return (\r) to two underscores
# respectively, whereas the outer replace pattern replaces the carriage return and line feed
# sequence of a log message to two underscores respectively. Adjust double underscore from
# both the places as per one's own choice of sequence.
#appender.stdout.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %replace{%replace{%m}{\n\r}{__}}{\r\n}{__}%n

### direct log messages to the db
appender.syslog.type=spsyslog
appender.syslog.name=spsyslog

# Below is an example of how to create a logger that writes to a file.
# Uncomment the following five lines, then uncomment the 
# rootLogger.appenderRef.file.ref definition below
#appender.file.type=File
#appender.file.name=file
#appender.file.fileName=C:/Windows/Temp/sailpoint.log
#appender.file.layout.type=PatternLayout
#appender.file.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n

#
# SailPoint metering is useful to help diagnose performance issues.
# Some critical sections of code will gather performance data
# metrics, and will log the data to the meter appender.
#
# Below is an example of how to create a csv of metered data.
# Uncomment the following 11 lines, as well as the logger.apiMeter lines
# near the end of this file
#
#appender.meter.type=RollingFile
#appender.meter.name=meter
#appender.meter.fileName=C:/Windows/Temp/meter.log
#appender.meter.filePattern=C:/Windows/Temp/meter-%d{yyyy-MM-dd}-%i.log.gz"
#appender.meter.layout.type=PatternLayout
#appender.meter.layout.pattern=%m%n
#appender.meter.policies.type=Policies
#appender.meter.policies.size.type=SizeBasedTriggeringPolicy
#appender.meter.policies.size.size=10MB
#appender.meter.strategy.type=DefaultRolloverStrategy
#appender.meter.strategy.max=5

## Default Appender ##
appender.rolling.type=RollingFile
appender.rolling.name=IIQRFile
appender.rolling.fileName=C:/SailPoint/IIQLogs/sailpoint.log
appender.rolling.filePattern=C:/SailPoint/IIQLogs/sailpoint-%d{yyyy-MM-dd}-%i.log.gz
appender.rolling.layout.type=PatternLayout
## OOTB pattern is '%d{ISO8601} %5p %t %c{4}:%L - %m%n' ##
appender.rolling.layout.pattern=%d{DEFAULT} %5p %t %c{4}:%L - %m%n
appender.rolling.policies.type=Policies
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=50MB
appender.rolling.strategy.type=DefaultRolloverStrategy
appender.rolling.strategy.max=15

## Same as Default Appender, we will use this appender in case where we need the logs generated sperately from the default loggger appender IIQRFile ##
appender.specificFile.type=RollingFile
appender.specificFile.name=IIQSpecificFile
appender.specificFile.fileName=C:/SailPoint/IIQLogs/Specific/specific.log
appender.specificFile.filePattern=C:/SailPoint/IIQLogs/Specific/specific-%d{yyyy-MM-dd}-%i.log.gz
appender.specificFile.layout.type=PatternLayout
appender.specificFile.layout.pattern=%d{DEFAULT} %5p %t %c{4}:%L - %m%n
appender.specificFile.policies.type=Policies
appender.specificFile.policies.size.type=SizeBasedTriggeringPolicy
appender.specificFile.policies.size.size=50MB
appender.specificFile.strategy.type=DefaultRolloverStrategy
appender.specificFile.strategy.max=15

## Sailpoint Console Appender same as default, this will be used to log console ##
appender.consoleFile.type=RollingFile
appender.consoleFile.name=IIQConsoleFile
appender.consoleFile.fileName=C:/SailPoint/IIQLogs/SailpointConsole/console.log.gz
appender.consoleFile.filePattern=C:/SailPoint/IIQLogs/SailpointConsole/console-%d{yyyy-MM-dd}-%i.log
appender.consoleFile.layout.type=PatternLayout
appender.consoleFile.layout.pattern=%d{DEFAULT} %5p %t %c{4}:%L - %m%n
appender.consoleFile.policies.type=Policies
appender.consoleFile.policies.size.type=SizeBasedTriggeringPolicy
appender.consoleFile.policies.size.size=50MB
appender.consoleFile.strategy.type=DefaultRolloverStrategy
appender.consoleFile.strategy.max=15

## Error Only Appender ##
appender.error.type=RollingFile
appender.error.name=IIQErrorFile
appender.error.fileName=C:/SailPoint/IIQLogs/Error/error.log
appender.error.filePattern=C:/SailPoint/IIQLogs/Error/error-%d{yyyy-MM-dd}-%i.log
appender.error.layout.type=PatternLayout
appender.error.layout.pattern=%d{DEFAULT} %5p %t %c{4}:%L - %m%n
appender.error.policies.type=Policies
appender.error.policies.size.type=SizeBasedTriggeringPolicy
appender.error.policies.size.size=50MB
appender.error.strategy.type=DefaultRolloverStrategy
appender.error.strategy.max=15
appender.error.filter.threshold.type=LevelRangeFilter
appender.error.filter.threshold.minLevel=error
appender.error.filter.threshold.maxLevel=error

#######################################
## rootLogger specify all appender rollings used by your log4j2
#######################################

rootLogger.level=warn
## Only appenderRef that has been used in log4j2, Here we are using all that are part of this example ##
rootLogger.appenderRefs=IIQRFile,IIQErrorFile,IIQSpecificFile,IIQConsoleFile
rootLogger.appenderRef.stdout.ref=stdout

## Specify the default appenderRef and error appenderRef to automate logging ##
rootLogger.appenderRef.rolling.ref=IIQRFile

## To log errors by default ##
rootLogger.appenderRef.error.ref=IIQErrorFile

#######################################
## SailPoint Console loggers iiq.bat console
#######################################
logger.spConsole.name=sailpoint.server.SailPointConsole
logger.spConsole.level=all
## remove the below 2 lines if you want to log in default IIQRFile appender ##
logger.spConsole.additivity=false
logger.spConsole.appenderRef.connector.ref=IIQConsoleFile

# log to your default appender IIQRFile
logger.orgSpringframework.name=org.springframework
logger.orgSpringframework.level=info

# log to your appender IIQSpecificFile in special cases
logger.ObjectConfig.name=sailpoint.object.ObjectConfig
logger.ObjectConfig.level=trace
logger.ObjectConfig.additivity=false
logger.ObjectConfig.appenderRef.connector.ref=IIQSpecificFile

## Disable Heartbeat logger ##
logger.heartbeat.name=sailpoint.server.HeartbeatService
logger.heartbeat.level=off

logger.statistical.name=org.hibernate.engine.internal.StatisticalLoggingSessionEventListener
logger.statistical.level=off

#######################################
## rootLogger
#######################################

### set default log levels and appenderRef
### valid log levels in increasing order of severity are: 
###     trace, debug, info, warn, error, fatal, off
### trace is required to get method entry and exit logging

#rootLogger.level=warn
#rootLogger.appenderRef.stdout.ref=stdout

# Uncomment to also write to file appender by default.
# Also need to uncomment the file appender definition above.
#rootLogger.appenderRef.file.ref=file

#######################################
## 3rd-party loggers (recommended)
#######################################

# Suppress a warning about using a default configuration
logger.ehcache.name=net.sf.ehcache
logger.ehcache.level=error

# Suppress "narrowing proxy" hibernate warning.
logger.ohe_spc.name=org.hibernate.engine.StatefulPersistenceContext
logger.ohe_spc.level=error

# Suppress warnings about deprecated gadgets during import
logger.jasper_engine_xml.name=net.sf.jasperreports.engine.xml
logger.jasper_engine_xml.level=error

# Note:  The following logging properties turn off warnings that result from our
#        combination of technologies (Tomahawk/Faceletes/A4J, etc.).  
#        Commenting them out will result in a slew of parser warnings.
#        If you don't want to clutter your logs with a bunch of useless warning
#        messages please leave these as they are.  

# Suppress warning message about Unparsable lastModified
logger.renderkit1.name=org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader
logger.renderkit1.level=error
# Suppress warning message about response not having <head> or <body> tags
logger.renderkit2.name=org.apache.myfaces.renderkit.html.util.DefaultAddResource
logger.renderkit2.level=error
# Suppress warning message about invalid HTML inside javascript
#   See http://www.mail-archive.com/users@myfaces.apache.org/msg50391.html
logger.renderkit3.name=org.apache.myfaces.renderkit.html.util.ReducedHTMLParser
logger.renderkit3.level=error

#######################################
## SailPoint loggers (required)
#######################################

# make sure the syslog code doesn't try to call itself if there's a problem.
# NOTE: The additivity flag is critical here!
logger.syslogAppender.name=sailpoint.api.logging.SyslogAppender
logger.syslogAppender.level=error
logger.syslogAppender.appenderRef.stdout.ref=stdout
logger.syslogAppender.additivity=false

logger.syslogEvent.name=sailpoint.object.SyslogEvent
logger.syslogEvent.level=error
logger.syslogEvent.appenderRef.stdout.ref=stdout
logger.syslogEvent.additivity=false

logger.sailpoint.name=sailpoint
logger.sailpoint.level=warn
logger.sailpoint.appenderRef.syslog.ref=spsyslog

# Hibernate logs a warn every time Criteria is used. Supress this until JPA migration is completed -rap
logger.hibernateDeprecation.name=org.hibernate.orm.deprecation
logger.hibernateDeprecation.level=error

#######################################
## SailPoint loggers (troubleshooting)
#######################################

#logger.orgHibernate.name=org.hibernate
#logger.orgHibernate.level=info
#logger.orgHibernate.level=debug
#logger.orgHibernate.level=trace

#logger.hibernateCache.name=org.hibernate.cache
#logger.hibernateCache.level=trace

#logger.orgSpringframework.name=org.springframework
#logger.orgSpringframework.level=info

#logger.orgQuartz.name=org.quartz
#logger.orgQuartz.level=info

# Uncomment to log all SQL and prepared statement parameter values.
#logger.hibernateSQL.name=org.hibernate.SQL
#logger.hibernateSQL.level=debug
#logger.hibernateType.name=org.hibernate.type
#logger.hibernateType.level=trace

# Uncomment this to log all SailPoint generated HQL queries and
# query parameters. 
#logger.persistenceHQL.name=sailpoint.persistence.hql
#logger.persistenceHQL.level=trace

# Uncomment to view JSF logging
#logger.phaseTracker.name=sailpoint.web.util.PhaseTracker
#logger.phaseTracker.level=trace
#logger.sunFaces.name=com.sun.faces
#logger.sunFaces.level=trace
#logger.javaxFaces.name=javax.faces
#logger.javaxFaces.level=trace

# Uncomment to enable logging of performance metering data
#logger.apiMeter.name=sailpoint.api.Meter
#logger.apiMeter.level=info
#logger.apiMeter.appenderRef.meter.ref=meter

# Uncomment to enable authentication related logging 
#logger.authFilter.name=sailpoint.web.PageAuthenticationFilter
#logger.authFilter.level=debug
#logger.authService.name=sailpoint.service.PageAuthenticationService
#logger.authService.level=debug
#logger.ssoValidator.name=sailpoint.web.sso.DefaultSSOValidator
#logger.ssoValidator.level=debug
#logger.ssoDefault.name=sailpoint.web.sso.DefaultSSOAuthenticator
#logger.ssoDefault.level=debug
#logger.ssoSAML.name=sailpoint.web.sso.SAMLSSOAuthenticator
#logger.ssoSAML.level=debug

# Uncomment to enable detailed multi-factor authentication logging
#logger.mfaFilter.name=sailpoint.web.MFAFilter
#logger.mfaFilter.level=debug
#logger.mfaLibrary.name=sailpoint.workflow.MFALibrary
#logger.mfaLibrary.level=info

# Uncomment to enable detailed statistics monitoring logging
#logger.monitoringService.name=sailpoint.server.MonitoringService
#logger.monitoringService.level=debug

#logger.aggregator.name=sailpoint.api.Aggregator
#logger.aggregator.level=trace

#logger.cacheTracker.name=sailpoint.api.CacheTracker
#logger.cacheTracker.level=trace

#logger.certificationer.name=sailpoint.api.Certificationer
#logger.certificationer.level=info

#logger.remediationManager.name=sailpoint.api.certification.RemediationManager
#logger.remediationManager.level=info

#logger.certificationPhaser.name=sailpoint.api.CertificationPhaser
#logger.certificationPhaser.level=info

#logger.correlationModel.name=sailpoint.api.CorrelationModel
#logger.correlationModel.level=info

#logger.lockTracer.name=sailpoint.api.LockTracker
#logger.lockTracer.level=trace

#logger.managedAttributer.name=sailpoint.api.ManagedAttributer
#logger.managedAttributer.level=info

#logger.provisioner.name=sailpoint.api.Provisioner
#logger.provisioner.level=info

#logger.oimClient.name=sailpoint.integration.oim.OIMClient
#logger.oimClient.level=info

#logger.objectConfig.name=sailpoint.object.ObjectConfig
#logger.objectConfig.level=info

#logger.dateType.name=sailpoint.persistence.DateType
#logger.dateType.level=info

#logger.debugInterceptor.name=sailpoint.persistence.DebugInterceptor
#logger.debugInterceptor.level=debug

#logger.hibernatePersistenceManager.name=sailpoint.persistence.HibernatePersistenceManager
#logger.hibernatePersistenceManager.level=trace
#logger.hibernatePersistenceManager.level=info

#logger.newXmlType.name=sailpoint.persistence.NewXmlType
#logger.newXmlType.level=info

#logger.sailPointInterceptor.name=sailpoint.persistence.SailPointInterceptor
#logger.sailPointInterceptor.level=info

#logger.xmlType.name=sailpoint.persistence.XmlType
#logger.xmlType.level=info

#logger.sailpointReporting.name=sailpoint.reporting
#logger.sailpointReporting.level=trace

#logger.bsfRuleRunner.name=sailpoint.server.BSFRuleRunner
#logger.bsfRuleRunner.level=trace

#logger.cacheService.name=sailpoint.server.CacheService
#logger.cacheService.level=info

#logger.serverEnvironment.name=sailpoint.server.Environment
#logger.serverEnvironment.level=trace

#logger.iiqRestService.name=sailpoint.service.IIQRestService
#logger.iiqRestService.level=info

#logger.idRefreshExecutor.name=sailpoint.task.IdentityRefreshExecutor
#logger.idRefreshExecutor.level=trace

#logger.roleSynchronizer.name=sailpoint.task.RoleSynchronizer
#logger.roleSynchronizer.level=info

#logger.timingFilter.name=sailpoint.web.util.TimingFilter
#logger.timingFilter.level=trace

#logger.heartbeat.name=sailpoint.server.HeartbeatService
#logger.heartbeat.level=trace

#logger.identityai.name=sailpoint.identityai
#logger.identityai.level=debug

#logger.connector_sm.name=sailpoint.connector.sm
#logger.connector_sm.level=debug

# ===================================================================
# The lines below have been dynamically added via the build script
# ===================================================================
        
#logger.comsailpointIIQDBPerformanceTest.name=com.sailpoint.IIQDBPerformanceTest
#logger.comsailpointIIQDBPerformanceTest.level=trace

#logger.comsailpointperformancesizingrule.name=com.sailpoint.performance.sizingrule
#logger.comsailpointperformancesizingrule.level=trace

#logger.sailpointperformancesizingrule.name=sailpoint.performance.sizingrule
#logger.sailpointperformancesizingrule.level=trace

#logger.sailpointruleDetect-OOTB-JDBC-Drivers.name=sailpoint.rule.Detect-OOTB-JDBC-Drivers
#logger.sailpointruleDetect-OOTB-JDBC-Drivers.level=trace

#logger.comsailpointservicesstandardSSThreadPoolTasksProcessor.name=com.sailpoint.services.standard.SSThreadPoolTasksProcessor
#logger.comsailpointservicesstandardSSThreadPoolTasksProcessor.level=trace

#logger.sailpointservicesstandardemailnotifierenhancedEnhancedNotifier.name=sailpoint.services.standard.emailnotifier.enhanced.EnhancedNotifier
#logger.sailpointservicesstandardemailnotifierenhancedEnhancedNotifier.level=trace

#logger.sailpointservicesstandardemailnotifierenhancedEnhancedSummaryProcessor.name=sailpoint.services.standard.emailnotifier.enhanced.EnhancedSummaryProcessor
#logger.sailpointservicesstandardemailnotifierenhancedEnhancedSummaryProcessor.level=trace

#logger.sailpointservicesstandardemailnotifierenhancedRedirectToFolderNotifier.name=sailpoint.services.standard.emailnotifier.enhanced.RedirectToFolderNotifier
#logger.sailpointservicesstandardemailnotifierenhancedRedirectToFolderNotifier.level=trace

#logger.sailpointservicesstandardemailnotifierenhancedTools.name=sailpoint.services.standard.emailnotifier.enhanced.Tools
#logger.sailpointservicesstandardemailnotifierenhancedTools.level=trace

#logger.sailpointservicesstandardemailnotifierenhancedVelocityEvaluator.name=sailpoint.services.standard.emailnotifier.enhanced.VelocityEvaluator
#logger.sailpointservicesstandardemailnotifierenhancedVelocityEvaluator.level=trace

#logger.sailpointservicesstandardmockintegrationexecutorMockIntegrationExecutor.name=sailpoint.services.standard.mockintegrationexecutor.MockIntegrationExecutor
#logger.sailpointservicesstandardmockintegrationexecutorMockIntegrationExecutor.level=trace

#logger.sailpointservicesstandardmockintegrationexecutorTicketSystemClient.name=sailpoint.services.standard.mockintegrationexecutor.TicketSystemClient
#logger.sailpointservicesstandardmockintegrationexecutorTicketSystemClient.level=trace

#logger.sailpointservicesstandardtaskCertificationCloser.name=sailpoint.services.standard.task.CertificationCloser
#logger.sailpointservicesstandardtaskCertificationCloser.level=trace

#logger.sailpointservicesstandardtaskManualCorrelationExporter.name=sailpoint.services.standard.task.ManualCorrelationExporter
#logger.sailpointservicesstandardtaskManualCorrelationExporter.level=trace

#logger.sailpointservicesstandardtaskManualCorrelationImporter.name=sailpoint.services.standard.task.ManualCorrelationImporter
#logger.sailpointservicesstandardtaskManualCorrelationImporter.level=trace

#logger.sailpointservicesstandardtaskReportExtractor.name=sailpoint.services.standard.task.ReportExtractor
#logger.sailpointservicesstandardtaskReportExtractor.level=trace

#logger.sailpointservicesstandardtaskReportExtractorSettings.name=sailpoint.services.standard.task.ReportExtractorSettings
#logger.sailpointservicesstandardtaskReportExtractorSettings.level=trace

#logger.sailpointservicesstandardtaskWorkgroupExporter.name=sailpoint.services.standard.task.WorkgroupExporter
#logger.sailpointservicesstandardtaskWorkgroupExporter.level=trace

#logger.sailpointservicesstandardtaskWorkgroupImporter.name=sailpoint.services.standard.task.WorkgroupImporter
#logger.sailpointservicesstandardtaskWorkgroupImporter.level=trace

#logger.sailpointservicesstandardtaskgenericImportAbstractGenericImport.name=sailpoint.services.standard.task.genericImport.AbstractGenericImport
#logger.sailpointservicesstandardtaskgenericImportAbstractGenericImport.level=trace

#logger.sailpointservicesstandardtaskgenericImportExcelSAXImport.name=sailpoint.services.standard.task.genericImport.ExcelSAXImport
#logger.sailpointservicesstandardtaskgenericImportExcelSAXImport.level=trace

#logger.sailpointservicesstandardtaskgenericImportGenericImport.name=sailpoint.services.standard.task.genericImport.GenericImport
#logger.sailpointservicesstandardtaskgenericImportGenericImport.level=trace

#logger.sailpointservicesstandardtaskgenericImportGenericImportController.name=sailpoint.services.standard.task.genericImport.GenericImportController
#logger.sailpointservicesstandardtaskgenericImportGenericImportController.level=trace

#logger.sailpointservicesstandardtaskgenericImportGenericImportTaskExecutor.name=sailpoint.services.standard.task.genericImport.GenericImportTaskExecutor
#logger.sailpointservicesstandardtaskgenericImportGenericImportTaskExecutor.level=trace

#logger.sailpointservicesstandardtaskgenericImportImporterUtil.name=sailpoint.services.standard.task.genericImport.ImporterUtil
#logger.sailpointservicesstandardtaskgenericImportImporterUtil.level=trace

#logger.sailpointservicesstandardtaskgenericImportJDBCImport.name=sailpoint.services.standard.task.genericImport.JDBCImport
#logger.sailpointservicesstandardtaskgenericImportJDBCImport.level=trace

#logger.sailpointservicesstandardtaskgenericImportParser.name=sailpoint.services.standard.task.genericImport.Parser
#logger.sailpointservicesstandardtaskgenericImportParser.level=trace

#logger.sailpointservicesstandardtaskgenericImportSchema.name=sailpoint.services.standard.task.genericImport.Schema
#logger.sailpointservicesstandardtaskgenericImportSchema.level=trace

#logger.sailpointservicesstandardtaskgenericImportTextFileImport.name=sailpoint.services.standard.task.genericImport.TextFileImport
#logger.sailpointservicesstandardtaskgenericImportTextFileImport.level=trace

#logger.sailpointservicesstandardtaskgenericImportTransmogrifier.name=sailpoint.services.standard.task.genericImport.Transmogrifier
#logger.sailpointservicesstandardtaskgenericImportTransmogrifier.level=trace

-- Kannan

can you add the below 3 lines and check please??

rootLogger.level=INFO
rootLogger.appenderRefs=file
rootLogger.appenderRef.file.ref=file

rootLogger

#######################################

set default log levels and appenderRef

valid log levels in increasing order of severity are:

trace, debug, info, warn, error, fatal, off

trace is required to get method entry and exit logging

rootLogger.level=warn
rootLogger.appenderRef.stdout.ref=stdout
rootLogger.appenderRefs=IIQRollingFile

Uncomment to also write to file appender by default.

Also need to uncomment the file appender definition above.

rootLogger.appenderRef.file.ref=file

@pmr542 If the issue still persists, you might want to share the complete log4j2.properties here for review.

(c) Copyright 2018 SailPoint Technologies, Inc., All Rights Reserved.

NOTE: The syntax of this file is different than what it was for

IdentityIQ 7.3 and earlier. These syntax changes are due to

our upgrade to log4j version 2.

See Configuration file :: Apache Log4j

for description of the new syntax.

######################################

Global log4j2 properties

######################################
name=identityiq_default
status=warn
monitorInterval=20
packages=sailpoint.api.logging

######################################

sailpoint properties

######################################
property.logLocation=${sys:java.io.tmpdir}${sys:file.separator}
property.discardsFilename=sailpointDiscardedMessages

#######################################

Appenders

#######################################

direct log messages to stdout

appender.stdout.type=Console
appender.stdout.name=stdout
appender.stdout.target=SYSTEM_OUT
appender.stdout.layout.type=PatternLayout
appender.stdout.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n

CRLF log injection can reduce the value of application logs. CRLF log injection can

be neutralized by applying log4j2’s replace conversion pattern to a log message. If

log4j2 environment is set up to use the PatternLayout, then while in stdout or file

write, an administrator can use the ‘replace’ conversion pattern to a log message to

neutralize CRLF sequence to double underscore. In the example below, the inner replace

pattern replaces a sequence of line feed (\n) and carriage return (\r) to two underscores

respectively, whereas the outer replace pattern replaces the carriage return and line feed

sequence of a log message to two underscores respectively. Adjust double underscore from

both the places as per one’s own choice of sequence.

#appender.stdout.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %replace{%replace{%m}{\n\r}{}}{\r\n}{}%n

direct log messages to the db

appender.syslog.type=spsyslog
appender.syslog.name=spsyslog

Below is an example of how to create a logger that writes to a file.

Uncomment the following five lines, then uncomment the

rootLogger.appenderRef.file.ref definition below

#appender.file.type=File
#appender.file.name=file
#appender.file.fileName=/app/tomcat9/logs/sailpoint.log
#appender.file.filePattern=/app/tomcat9/logs/sailpoint-%d{yyyy-MM-dd}-%i.log.gz
#appender.file.fileName=C:/Windows/Temp/sailpoint.log
#appender.file.layout.type=PatternLayout
#appender.file.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n

appender.RollingFile.type=RollingFile
appender.RollingFile.name=file
appender.RollingFile.fileName=/app/tomcat9/logs/sailpoint.log
appender.RollingFile.filePattern=/app/tomcat9/logs/sailpoint-%d{yyyy-MM-dd}-%i.log.gz
appender.RollingFile.layout.type=PatternLayout
appender.RollingFile.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n
appender.RollingFile.policies.type=Policies
appender.RollingFile.policies.size.type=SizeBasedTriggeringPolicy
appender.RollingFile.policies.size.size=50MB
appender.RollingFile.strategy.type=DefaultRolloverStrategy
appender.RollingFile.strategy.max=5

used by queue processing to log messages that could not be processed

appender.discards.type=RollingFile
appender.discards.name=discards
appender.discards.fileName=${logLocation}${discardsFilename}.log
appender.discards.filePattern=${discardsFilename}-%d{MM-dd-yyyy}-%i.log
appender.discards.layout.type=PatternLayout
appender.discards.layout.pattern=%m%n
appender.discards.policies.type=Policies
appender.discards.policies.size.type=SizeBasedTriggeringPolicy
appender.discards.policies.size.size=100MB
appender.discards.strategy.type=DefaultRolloverStrategy
appender.discards.strategy.max=5

SailPoint metering is useful to help diagnose performance issues.

Some critical sections of code will gather performance data

metrics, and will log the data to the meter appender.

Below is an example of how to create a csv of metered data.

Uncomment the following 11 lines, as well as the logger.apiMeter lines

near the end of this file

#appender.meter.type=RollingFile
#appender.meter.name=meter
#appender.meter.fileName=C:/Windows/Temp/meter.log
#appender.meter.filePattern=C:/Windows/Temp/meter-%d{yyyy-MM-dd}-%i.log.gz"
#appender.meter.layout.type=PatternLayout
#appender.meter.layout.pattern=%m%n
#appender.meter.policies.type=Policies
#appender.meter.policies.size.type=SizeBasedTriggeringPolicy
#appender.meter.policies.size.size=10MB
#appender.meter.strategy.type=DefaultRolloverStrategy
#appender.meter.strategy.max=5

#######################################

rootLogger

#######################################

set default log levels and appenderRef

valid log levels in increasing order of severity are:

trace, debug, info, warn, error, fatal, off

trace is required to get method entry and exit logging

rootLogger.level=warn
rootLogger.appenderRef.stdout.ref=stdout
rootLogger.appenderRefs=IIQRollingFile

Uncomment to also write to file appender by default.

Also need to uncomment the file appender definition above.

rootLogger.appenderRef.file.ref=file

#######################################

3rd-party loggers (recommended)

#######################################

Suppress a warning about using a default configuration

logger.ehcache.name=net.sf.ehcache
logger.ehcache.level=error

Suppress “narrowing proxy” hibernate warning.

logger.ohe_spc.name=org.hibernate.engine.StatefulPersistenceContext
logger.ohe_spc.level=error

Suppress warnings about deprecated gadgets during import

logger.jasper_engine_xml.name=net.sf.jasperreports.engine.xml
logger.jasper_engine_xml.level=error

Note: The following logging properties turn off warnings that result from our

combination of technologies (Tomahawk/Faceletes/A4J, etc.).

Commenting them out will result in a slew of parser warnings.

If you don’t want to clutter your logs with a bunch of useless warning

messages please leave these as they are.

Suppress warning message about Unparsable lastModified

logger.renderkit1.name=org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader
logger.renderkit1.level=error

Suppress warning message about response not having or tags

logger.renderkit2.name=org.apache.myfaces.renderkit.html.util.DefaultAddResource
logger.renderkit2.level=error

Suppress warning message about invalid HTML inside javascript

See Re: [tobago] parsing warning by org.apache.myfaces.renderkit.html.util.ReducedHTMLParser

logger.renderkit3.name=org.apache.myfaces.renderkit.html.util.ReducedHTMLParser
logger.renderkit3.level=error

#######################################

SailPoint loggers (required)

#######################################

make sure the syslog code doesn’t try to call itself if there’s a problem.

NOTE: The additivity flag is critical here!

logger.syslogAppender.name=sailpoint.api.logging.SyslogAppender
logger.syslogAppender.level=error
logger.syslogAppender.appenderRef.stdout.ref=stdout
logger.syslogAppender.additivity=false

logger.syslogEvent.name=sailpoint.object.SyslogEvent
logger.syslogEvent.level=error
logger.syslogEvent.appenderRef.stdout.ref=stdout
logger.syslogEvent.additivity=false

logger.sailpoint.name=sailpoint
logger.sailpoint.level=warn
logger.sailpoint.appenderRef.syslog.ref=spsyslog

logger.discards.name=discards
logger.discards.level = info
logger.discards.additivity = false
logger.discards.appenderRefs = discards
logger.discards.appenderRefs.level = info
logger.discards.appenderRef.discards.ref = discards

Hibernate logs a warn every time Criteria is used. Supress this until JPA migration is completed -rap

logger.hibernateDeprecation.name=org.hibernate.orm.deprecation
logger.hibernateDeprecation.level=error

ActiveMQ client often issues unuseful errors/warnings

logger.activemqfailover.name=org.apache.activemq.transport.failover.FailoverTransport
logger.activemqfailover.level=OFF
logger.activemqsecurity.name=org.apache.activemq.broker.TransportConnection.Service
logger.activemqsecurity.level=error

#######################################

SailPoint loggers (troubleshooting)

#######################################

#logger.orgHibernate.name=org.hibernate
#logger.orgHibernate.level=info
#logger.orgHibernate.level=debug
#logger.orgHibernate.level=trace

#logger.hibernateCache.name=org.hibernate.cache
#logger.hibernateCache.level=trace

#logger.orgSpringframework.name=org.springframework
#logger.orgSpringframework.level=info

#logger.orgQuartz.name=org.quartz
#logger.orgQuartz.level=info

Uncomment to log all SQL and prepared statement parameter values.

#logger.hibernateSQL.name=org.hibernate.SQL
#logger.hibernateSQL.level=debug
#logger.hibernateType.name=org.hibernate.type
#logger.hibernateType.level=trace

Uncomment this to log all SailPoint generated HQL queries and

query parameters.

#logger.persistenceHQL.name=sailpoint.persistence.hql
#logger.persistenceHQL.level=trace

Uncomment to view JSF logging

#logger.phaseTracker.name=sailpoint.web.util.PhaseTracker
#logger.phaseTracker.level=trace
#logger.sunFaces.name=com.sun.faces
#logger.sunFaces.level=trace
#logger.javaxFaces.name=javax.faces
#logger.javaxFaces.level=trace

Uncomment to enable logging of performance metering data

#logger.apiMeter.name=sailpoint.api.Meter
#logger.apiMeter.level=info
#logger.apiMeter.appenderRef.meter.ref=meter

Uncomment to enable authentication related logging

#logger.authFilter.name=sailpoint.web.PageAuthenticationFilter
#logger.authFilter.level=debug
#logger.authService.name=sailpoint.service.PageAuthenticationService
#logger.authService.level=debug
#logger.ssoValidator.name=sailpoint.web.sso.DefaultSSOValidator
#logger.ssoValidator.level=debug
#logger.ssoDefault.name=sailpoint.web.sso.DefaultSSOAuthenticator
#logger.ssoDefault.level=debug
#logger.ssoSAML.name=sailpoint.web.sso.SAMLSSOAuthenticator
#logger.ssoSAML.level=debug

Uncomment to enable detailed multi-factor authentication logging

#logger.mfaFilter.name=sailpoint.web.MFAFilter
#logger.mfaFilter.level=debug
#logger.mfaLibrary.name=sailpoint.workflow.MFALibrary
#logger.mfaLibrary.level=info

Uncomment to enable detailed statistics monitoring logging

#logger.monitoringService.name=sailpoint.server.MonitoringService
#logger.monitoringService.level=debug

#logger.aggregator.name=sailpoint.api.Aggregator
#logger.aggregator.level=trace

#logger.cacheTracker.name=sailpoint.api.CacheTracker
#logger.cacheTracker.level=trace

#logger.certificationer.name=sailpoint.api.Certificationer
#logger.certificationer.level=info

#logger.remediationManager.name=sailpoint.api.certification.RemediationManager
#logger.remediationManager.level=info

#logger.certificationPhaser.name=sailpoint.api.CertificationPhaser
#logger.certificationPhaser.level=info

#logger.correlationModel.name=sailpoint.api.CorrelationModel
#logger.correlationModel.level=info

#logger.lockTracer.name=sailpoint.api.LockTracker
#logger.lockTracer.level=trace

#logger.managedAttributer.name=sailpoint.api.ManagedAttributer
#logger.managedAttributer.level=info

#logger.provisioner.name=sailpoint.api.Provisioner
#logger.provisioner.level=info

#logger.oimClient.name=sailpoint.integration.oim.OIMClient
#logger.oimClient.level=info

#logger.objectConfig.name=sailpoint.object.ObjectConfig
#logger.objectConfig.level=info

#logger.dateType.name=sailpoint.persistence.DateType
#logger.dateType.level=info

#logger.debugInterceptor.name=sailpoint.persistence.DebugInterceptor
#logger.debugInterceptor.level=debug

#logger.hibernatePersistenceManager.name=sailpoint.persistence.HibernatePersistenceManager
#logger.hibernatePersistenceManager.level=trace
#logger.hibernatePersistenceManager.level=info

#logger.newXmlType.name=sailpoint.persistence.NewXmlType
#logger.newXmlType.level=info

#logger.sailPointInterceptor.name=sailpoint.persistence.SailPointInterceptor
#logger.sailPointInterceptor.level=info

#logger.xmlType.name=sailpoint.persistence.XmlType
#logger.xmlType.level=info

#logger.sailpointReporting.name=sailpoint.reporting
#logger.sailpointReporting.level=trace

#logger.bsfRuleRunner.name=sailpoint.server.BSFRuleRunner
#logger.bsfRuleRunner.level=trace

#logger.cacheService.name=sailpoint.server.CacheService
#logger.cacheService.level=info

#logger.serverEnvironment.name=sailpoint.server.Environment
#logger.serverEnvironment.level=trace

#logger.iiqRestService.name=sailpoint.service.IIQRestService
#logger.iiqRestService.level=info

#logger.idRefreshExecutor.name=sailpoint.task.IdentityRefreshExecutor
#logger.idRefreshExecutor.level=trace

#logger.roleSynchronizer.name=sailpoint.task.RoleSynchronizer
#logger.roleSynchronizer.level=info

#logger.timingFilter.name=sailpoint.web.util.TimingFilter
#logger.timingFilter.level=trace

#logger.heartbeat.name=sailpoint.server.HeartbeatService
#logger.heartbeat.level=trace

#logger.identityai.name=sailpoint.identityai
#logger.identityai.level=debug

#logger.connector_sm.name=sailpoint.connector.sm
#logger.connector_sm.level=debug

#logger.rs.name=sailpoint.rapidsetup
#logger.rs.level=debug
#logger.rsl.name=sailpoint.workflow.RapidSetupLibrary
#logger.rsl.level=debug

#logger.post_commit_handler.name=sailpoint.persistence.PostCommitUpdateListener
#logger.post_commit_handler.level=debug

#logger.hibernateListenerService.name=sailpoint.persistence.HibernateListenerService
#logger.hibernateListenerService.level=debug

Uncomment to enable detailed AccessHistory logging

#logger.accesshistory.name=sailpoint.accesshistory
#logger.accesshistory.level=debug

Uncomment to enable detailed change event generation logging

#logger.changeevent.name=sailpoint.accesshistory.changeevent
#logger.changeevent.level=debug

Uncomment to enable detailed logging for AccessHistoryWriterService

#logger.accesshistorywriterservice.name=sailpoint.server.AccessHistoryWriterService
#logger.accesshistorywriterservice.level=debug

Uncomment to enable detailed logging for HistoryEventConsumer

#logger.historyeventconsumer.name=sailpoint.accesshistory.HistoryEventConsumer
#logger.historyeventconsumer.level=debug

Uncomment to enable detailed logging for AccessHistoryUtil

#logger.accesshistoryutil.name=sailpoint.accesshistory.AccessHistoryUtil
#logger.accesshistoryutil.level=debug

Uncomment to enable detailed logging for ALL Identity event generators

#logger.identityeventgenerators.name=sailpoint.accesshistory.event.identity
#logger.identityeventgenerators.level=debug

Uncomment to enable detailed logging for Identity AssignedRoleAddedEventGenerator

#logger.identityassignedroleadded.name=sailpoint.accesshistory.event.identity.AssignedRoleAddedEventGenerator
#logger.identityassignedroleadded.level=debug

Uncomment to enable detailed logging for Identity AssignedRoleRemovedEventGenerator

#logger.identityassignedroleremoved.name=sailpoint.accesshistory.event.identity.AssignedRoleRemovedEventGenerator
#logger.identityassignedroleremoved.level=debug

Uncomment to enable detailed logging for Identity DetectedRoleAddedEventGenerator

#logger.identityassignedroleadded.name=sailpoint.accesshistory.event.identity.DetectedRoleAddedEventGenerator
#logger.identityassignedroleadded.level=debug

Uncomment to enable detailed logging for Identity DetectedRoleRemovedEventGenerator

#logger.identitydetectedroleremoved.name=sailpoint.accesshistory.event.identity.DetectedRoleRemovedEventGenerator
#logger.identitydetectedroleremoved.level=debug

Uncomment to enable detailed logging for Identity EntitlementAddedEventGenerator

#logger.identityentitlementadded.name=sailpoint.accesshistory.event.identity.EntitlementAddedEventGenerator
#logger.identityentitlementadded.level=debug

Uncomment to enable detailed logging for Identity EntitlementRemovedEventGenerator

#logger.identityentitlementremoved.name=sailpoint.accesshistory.event.identity.EntitlementRemovedEventGenerator
#logger.identityentitlementremoved.level=debug

Uncomment to enable detailed logging for Identity ManagerChangeEventGenerator

#logger.identitymanagerchanage.name=sailpoint.accesshistory.event.identity.ManagerChangeEventGenerator
#logger.identitymanagerchanage.level=debug

Uncomment to enable detailed logging for Identity StatusChangeEventGenerator

#logger.identitystatuschanage.name=sailpoint.accesshistory.event.identity.StatusChangeEventGenerator
#logger.identitystatuschanage.level=debug

Uncomment to enable detailed logging for IdentityAttributeChangeEventGenerator

#logger.identityattributechanage.name=sailpoint.accesshistory.event.identity.IdentityAttributeChangeEventGenerator
#logger.identityattributechanage.level=debug

Uncomment to enable detailed logging for Identity PolicyViolationMitigationEventGenerator

#logger.identitypolicyviolationmitigation.name=sailpoint.accesshistory.event.identity.PolicyViolationMitigationEventGenerator
#logger.identitypolicyviolationmitigation.level=debug

#Uncomment to enable detailed logging for BaseDataExtractExecutor
#logger.basedataextractexecutor.name=sailpoint.task.BaseDataExtractExecutor
#logger.basedataextractexecutor.level=debug

Hi @pmr542 ,

Once try to add below lines and check it.

######################################

Custom RollingFile Appender

######################################
appender.IIQDebug2.type=RollingFile
appender.IIQDebug2.name=IIQDebug2
appender.IIQDebug2.fileName=/opt/SailpointLogs/sailpoint2.log
appender.IIQDebug2.filePattern=${LOG_DIR}/application.%d{dd-MMM}.log.gz
appender.IIQDebug2.layout.type=PatternLayout
appender.IIQDebug2.layout.pattern = %d{ISO8601} %5p %t %c{4}:%L - %m%n
appender.IIQDebug2.policies.type=Policies
appender.IIQDebug2.policies.size.type=SizeBasedTriggeringPolicy
appender.IIQDebug2.policies.size.size=200MB
appender.IIQDebug2.strategy.type=DefaultRolloverStrategy
appender.IIQDebug2.strategy.max=15

######################################

Logger for Custom Log

######################################
logger.aggregator.name=com.sailpoint.demo
logger.aggregator.level=trace
logger.aggregator.additivity=false
logger.aggregator.appenderRef.connector.ref=IIQDebug2

Please refer below link:

https://community.sailpoint.com/t5/IdentityIQ-Wiki/Configure-Rollingfile-loggers-in-log4j2-properties/ta-p/166446

Thankyou

Harikrishna

@pmr542 Could you please update: rootLogger.appenderRef.file.ref=RollingFile. Currently it is referring to file appender which you have commented out.

@pmr542 - Please update your properties file correctly, when you are configured as IIQRollingFile, and you should also use the same name here -

rootLogger.appenderRef.file.ref=IIQRollingFile

Regards,

Kannan