Log file Rolling Issue - Latest

Spectrum Spatial Guide

Product type
Software
Portfolio
Locate
Product family
Spectrumâ„¢ software
Product
Spectrumâ„¢ software > Spatial > Spectrum Spatial
Version
Latest
ft:locale
en-US
Product name
Spectrum Technology Platform
ft:title
Spectrum Spatial Guide
Copyright
2025
First publish date
2007
ft:lastEdition
2025-03-07
ft:lastPublication
2025-03-07T10:28:48.112000

The logback configuration file defines Logger and Appender class instances used by Spectrum.

The spectrum-server.log file contains the logs. On Windows platform the log file rollover stops after reaching the file size limit specified in the maxFileSize parameter.

To resolve this issue, follow these steps.

  1. Stop the server.
  2. Take a backup of the spectrum-server.log (and other log files, if any) and logback.xml files.
    • spectrum-server.log is located at \server\logs.
    • logback.xml is located at \server\conf.
    After creating the backup, delete the spectrum-server.log file and other log files, if any.
  3. Go to \server\conf.
  4. Edit the logback.xml file to delete all the existing content, then copy the content from the example section into this file.
  5. Save and restart the server.

Example:

In this example, the maxFileSize limit is specified as 10 MB. Once the specified file size is reached, the new log file(s) will be generated with this format, spectrumserver-yyyy-mm-dd.

You can copy the following content and paste it into the logback.xml file.

<configuration debug="false">		        
<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->	        
<property name="LOG_ROOT" value="../logs" />
<property name="LOG_FILE_NAME" value="spectrumserver" />		        

<!-- main log file-->
<appender name="RootFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_ROOT}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file's size will be max 10MB -->
<maxFileSize>10MB</maxFileSize>    
<!-- 30 days to keep -->
<maxHistory>30</maxHistory>
<!-- total size of all archive files, if total size > 2GB, it will delete old archived file -->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>  
		        
<!-- audit appenders -->
<appender name="NOTIFICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../logs/notification.log</file>
<encoder>
<pattern>%d %-5p %m%n</pattern>
</encoder>
<append>true</append>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>../logs/notification.log.%i</fileNamePattern>
<maxIndex>1</maxIndex>
</rollingPolicy>
</appender>
		        
<appender name="PERFORMANCE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../logs/performance.log</file>
<encoder>
<pattern>%d [%c{0}] %m%n</pattern>
</encoder>
<append>true</append>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>../logs/performance.log.%i</fileNamePattern>
<maxIndex>5</maxIndex>
</rollingPolicy>
</appender>
		        
 <!--
  <appender name="HAZELCAST" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>../logs/hazelcast.log</file>
    <encoder>
      <pattern>%d [%c{0}] %m%n</pattern>
    </encoder>
    <append>true</append>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>100MB</maxFileSize>
    </triggeringPolicy>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>../logs/hazelcast.log.%i</fileNamePattern>
      <maxIndex>5</maxIndex>
    </rollingPolicy>
  </appender>
  -->
		        
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
		        
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5p [%c{0}] %m%n</pattern>
</encoder>
<filter class="com.pb.spectrum.platform.server.common.logging.LogbackFilter"/>
</appender>
		        
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
		        
 <!-- ================ -->
 <!-- Limit categories -->
 <!-- ================ -->
		        
<logger name="STDOUT" level="INFO"/>		        
<logger name="STDERR" level="INFO"/>
		        
<logger name="com.g1" level="INFO"/>
		        
<logger name="com.pb.spectrum" level="INFO"/>
		        
<logger name="com.pb.spectrum.common.spring.ResolvingPropertiesFactoryBean" level="WARN"/>
		        
<logger name="com.pb.spectrum.common.springintegration" level="WARN"/>
		        
<logger name="com.g1.dcg.services.servlet" level="WARN"/>
		        
<logger name="ch.qos.logback" level="WARN"/>
		        
<logger name="org.apache.commons" level="INFO"/>
		        
<logger name="org.apache.cxf" level="ERROR"/>
		        
<logger name="com.caucho" level="ERROR"/>
		        
<logger name="com.pb.spectrum.platform.server.common.persistence.core.transaction" level="INFO"/>
		        
<!--<logger name="camel.QueueProducer" level="DEBUG"/>-->
<!--<logger name="camel.QueueConsumer" level="DEBUG"/>-->
<!--<logger name="camel.TopicProducer" level="DEBUG"/>-->
<!--<logger name="camel.TopicConsumer" level="DEBUG"/>-->
		        
<!--<logger name="com.pb.spectrum.platform.server.common.remoting.RemoteManagerMethodInvokerAspect" level="DEBUG"/>-->
<!--<logger name="com.pb.spectrum.platform.server.config.ProxyLoggingAspect" level="DEBUG"/>-->
		        
<!--<logger name="com.pb.spectrum.platform.server.common.persistence.core.GraphSupport" level="DEBUG"/>-->
<!--<logger name="com.pb.spectrum.platform.server.common.persistence.graph.neo4j.cypher.query.CypherGraphQueryExecutor" level="DEBUG"/>-->
		        
<logger name="org.neo4j" level="WARN"/>
	        
<logger name="org.eclipse.jetty" level="ERROR"/>
		        
<logger name="org.apache.xalan" level="INFO"/>
		        
<logger name="org.apache.ddlutils.util.JdbcSupport" level="ERROR"/>
		        
<logger name="org.springframework" level="ERROR"/>
		        
<logger name="org.springframework.security.access.intercept.aspectj.AspectJSecurityInterceptor" level="ERROR"/>
		        
<logger name="org.apache.directory.server.schema.registries.DefaultOidRegistry" level="ERROR"/>
		        
<logger name="org.apache.directory.server.core.interceptor.context.SearchingOperationContext" level="ERROR"/>
		        
<logger name="org.apache.ddlutils.platform" level="ERROR"/>
		        
<logger name="org.springframework.integration.gateway.GatewayProxyFactoryBean$MethodInvocationGateway" level="ERROR"/>
		        
<logger name="org.pac4j.core.client.BaseClient" level="ERROR"/>
		        
<logger name="org.teiid.SECURITY" level="ERROR"/>
		        
<logger name="org.teiid.COMMAND_LOG" level="WARN"/>
		        
<!-- <logger name="com.g1.dcg.server.security.web.filters.LoggingFilter" level="DEBUG"/>-->
		        
<logger name="audit.notification" additivity="false" level="INFO">
<appender-ref ref="NOTIFICATION"/>
</logger>
		        
<logger name="performance" additivity="false" level="INFO">
<appender-ref ref="PERFORMANCE"/>
</logger>

<!--
  <logger name="com.hazelcast" additivity="false" level="DEBUG">
    <appender-ref ref="HAZELCAST"/>
  </logger>
  -->
		        
<root level="WARN">
<appender-ref ref="CONSOLE"/>
<!--<appender-ref ref="FILE"/>-->
<appender-ref ref="RootFileAppender"/>
</root>
		        
</configuration>