Page History
...
- JS7 makes use of Log4j2 for logging purposes. Log rotation is required to prevent log files from filling up disk space.
- The default configuration includes to limit allows disk space consumption to be limited for each of Controller, Agent and JOC Cockpit.
- The configuration to rotate for rotating log files is similar for any all JS7 components.
- Consider Note that log output of from orders and jobs in workflow are is not stored with log files but are is immediately added to the JS7 - Database and JS7 - History respectively.
...
The Log4j2 configuration file is log4j2.xml that is found with and has the following default locations as per for each JS7 component:
Windows | Unix | |
---|---|---|
Controller | C:\Program Files\sos-berlin.com\js7\controller\lib\log42j.xml | /opt/sos-berlin.com/js7/controller/lib/log4j2,xml |
Agent | C:\Program Files\sos-berlin.com\js7\agent\lib\log42j.xml | /opt/sos-berlin.com/js7/agent/lib/log4j2,xml |
JOC Cockpit | C:\ProgramData\sos-berlin.com\js7\joc\jetty_base\resources\joc\log42j.xml | /var/sos-berlin.com/js7/joc/jetty_base/resources/joc/log4j2,xml |
...
Users are free to modify the Log4j2 configuration to apply their individual log rotation strategy, see the explanations for the examples below examples explained.
As an exception to this rule the watchdog log files for Controller and Agent, which are not subject to log rotation. The watchdog log file captures any output before the respective application is started, e.g. output of the Controller Windows Service, and therefore does not make use of Log4j2 for logging. The watchdog log files therefore should not grow but should report a few lines only in situations when a Controller or Agent could not be started.
...
Log retention does not apply to:
- the
audit.log
log file that , which is rotated but is not subject to log retention and therefore is not removed or truncated. For compliance reasons theaudit.log
remains in place for an arbitrary duration. It's the user's responsibility to purge theaudit.log
to their requirements. - the
watchdog.log
files of Controller and Agent that hold any output created before starting the respective relevant application is started.
Configuration Files explained
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" shutdownHook="disable"> <Properties> <Property name="TimeZone">${env:SCHEDULER_TZ:-Etc/UTC}</Property> <Property name="LogDir">${env:SCHEDULER_LOGS:-logs}</Property> <Property name="LogBasename">${env:SCHEDULER_APPNAME:-controller}</Property> <Property name="RetainDays">30d</Property> <Property name="MaxSizeOfRolledOverFiles">5GB</Property> <Property name="MaxSizePerFile">100MB</Property> <!-- Log level of the Root Logger. --> <Property name="RootLogLevel">INFO</Property> <!-- Configuration for a 2nd debug log file (OFF|DEBUG|TRACE) If this value is set to DEBUG or TRACE then the above RootLogLevel has to have the same value. --> <Property name="LogLevelOfDebugLog">OFF</Property> </Properties> <Appenders> <Console name="console" target="SYSTEM_ERR"> <PatternLayout pattern="%highlight{%d{EE HH:mm:ss.SSS}{${TimeZone}} %-5level{INFO=info, DEBUG=debug, TRACE=trace} %logger - %message}{WARN=magenta}%n"/> </Console> <RollingRandomAccessFile name="fileInfo" fileName="${LogDir}/${LogBasename}.log" filePattern="${LogDir}/${LogBasename}-%d{yyyy-MM-dd}-%i.log.gz" immediateFlush="false"> <PatternLayout pattern="%d{ISO8601}{${TimeZone}} %-5level{INFO=info, DEBUG=debug, TRACE=trace} %logger - %message%n" charset="UTF-8"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${LogDir}"> <IfFileName glob="*/${LogBasename}-*.log.gz" /> <IfAny> <IfLastModified age="${RetainDays}" /> <IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/> </IfAny> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <RollingRandomAccessFile name="fileDebug" fileName="${LogDir}/${LogBasename}-debug.log" filePattern="${LogDir}/${LogBasename}-debug-%d{yyyy-MM-dd}-%i.log.gz" immediateFlush="false"> <PatternLayout pattern="%d{ISO8601}{${TimeZone}} %-5level{INFO=info, DEBUG=debug, TRACE=trace} %logger - %message%n" charset="UTF-8"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${LogDir}"> <IfFileName glob="*/${LogBasename}-*.log.gz" /> <IfAny> <IfLastModified age="${RetainDays}" /> <IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/> </IfAny> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> </Appenders> <Loggers> <Logger name="spray" level="INFO"/> <Logger name="akka" level="INFO"/> <Logger name="akka.event.slf4j.Slf4jLogger" level="WARN"/> <Logger name="js7.common.akkahttp.web.auth.GateKeeper" level="ERROR"/> <Root level="${RootLogLevel}"> <!--AppenderRef ref="console" level="ERROR"/--> <AppenderRef ref="fileInfo" level="INFO"/> <AppenderRef ref="fileDebug" level="${LogLevelOfDebugLog}"/> </Root> </Loggers> </Configuration> |
ExplanationsExplanation:
- To modify the time zone that is applied to log entries and to the point in time of log rotation modify
<Property name="TimeZone">Etc/UTC</Property>
. The time zone is specified during the startscript by setting the environment variableSCHEDULER_TZ
. - To enable debug mode modify
<property name="RootLogLevel">INFO</property>
and<property name="LogLevelOfDebugLog">OFF</property>
toDEBUG.
- To change the log retention period modify
<Property name="RetainDays">30d</Property>
to some other value. Consider to Note the use of the suffix suffixesd
(ays),w
(eeks),m
(onths). - To limit the max. size of individual log files modify
<Property name="MaxSizePerFile">100MB</Property>
to some other value. Consider to Note the use of the unitsMB
,GB
. - To limit space consumption of all log files modify
<Property name="MaxSizeOfRolledOverFiles">5GB</Property>
to some other value. Consider to Note the use of the unitsMB
,GB
.
JOC Cockpit Log4j2 Configuration
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <Property name="TimeZone">Etc/UTC</Property> <Property name="RetainDays">30d</Property> <Property name="MaxSizeOfRolledOverFiles">5 GB</Property> <Property name="MaxSizePerFile">100 MB</Property> <!-- Log level of the Root Logger. --> <Property name="RootLogLevel">INFO</Property> <!-- Configurations for 2nd debug log files (OFF|DEBUG|TRACE) If one of these values is set to DEBUG or TRACE then the above RootLogLevel has to have the same value. --> <Property name="JocLogLevel">OFF</Property> <Property name="ClusterLogLevel">OFF</Property> <Property name="HistoryLogLevel">OFF</Property> <Property name="DailyPlanLogLevel">OFF</Property> <Property name="CleanupLogLevel">OFF</Property> <Property name="AuthLogLevel">OFF</Property> <Property name="ConnectionPoolLogLevel">OFF</Property> </Properties> <Appenders> <!-- Appender for audit log --> <RollingFile name="AuditLogAppender" fileName="${sys:user.dir}/logs/audit.log" filePattern="${sys:user.dir}/logs/audit-%d{yyyy-MM}-%i.log.gz" createOnDemand="true"> <PatternLayout pattern="%d{ISO8601}{${TimeZone}} %-5p %m%throwable{short}%n" charset="UTF-8"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"/> </RollingFile> <!-- Appender for connection pool log --> ... </Appender> </Appenders> ... <Configuration> |
ExplanationsExplanation:
- To modify the time zone that is applied to log entries and to the point in time of log rotation modify
<Property name="TimeZone">Etc/UTC</Property>
. The time zone is specified during installation. - To change the log retention period modify
<Property name="RetainDays">30d</Property>
to some other value. Consider to Note the use of the suffix suffixesd
(ays),w
(eeks),m
(onths). - To limit space consumption of all log files modify
<Property name="MaxSizeOfRolledOverFiles">5 GB</Property>
to some other value. Consider to Note the use of the unitsMB
,GB
. - To limit the max. size of individual log files modify
<Property name="MaxSizePerFile">100 MB</Property>
to some other value. Consider to Note the use of the unitsMB
,GB
. - To enable debug mode modify
<property name="RootLogLevel">INFO</property>
toDEBUG
. In addition modify the value of one or more of the following properties accordingly to enable debug output with the respective debug log file:Log File Property joc-debug.log
<Property name="JocLogLevel">DEBUG</Property>
service-cluster-debug.log
<Property name="ClusterLogLevel">DEBUG</Property>
service-history-debug.log
<Property name="HistoryLogLevel">DEBUG</Property>
service-dailyplan-debug.log
<Property name="DailyPlanLogLevel">DEBUG</Property>
service-cleanup-debug.log
<Property name="CleanupLogLevel">DEBUG</Property>
authentication-debug.log
<Property name="AuthLogLevel">DEBUG</Property>
connection-pool-debug.log
<Property name="ConnectionPoolLogLevel">DEBUG</Property>
...