Skip to content
Platform > Operations

Logging

This page describes where 3forge Enterprise writes its logs, how those files rotate, and which properties control logging behavior.

Overview

3forge Enterprise writes several log streams into the log/ directory beneath the installation root. Application logging goes to a named log file, the process standard output and error streams are captured separately, and garbage collection output goes to its own file.

Log file names derive from the application name, so every file carries the AmiCore prefix. Rotation is handled at startup rather than by an external tool.

Log files

File Contents
log/AmiCore.log Application log
log/AmiCore.amilog AMI log
log/AmiCore.stdout Process standard output
log/AmiCore.stderr Process standard error
log/gc.log Garbage collection output
log/AmiCore.stats Runtime statistics, recorded every ami.amilog.stats.period. These are also what OpenTelemetry export sends to a collector

The startup banner, the JVM version, the applied JVM options, the classpath, and the main class are all written to the standard output log before the process starts, which makes that file the first place to look when a start fails.

Rotation

Ten generations of each stream are retained. Rotated files carry a numeric suffix:

Pattern Stream
log/AmiCore%nnnn.stdout Standard output
log/AmiCore.%nnnn.stderr Standard error
log/AmiCore%nnnn.gc Garbage collection
log/AmiCore.%nnnn.stats Runtime statistics. The number kept is set by ami.amilog.stats.retention.count, and the oldest is deleted at each start

Rotation happens when the process starts, not on a size or time trigger. A long-running instance therefore accumulates output in a single file until it is restarted, so size the filesystem for the interval between restarts rather than for a rotation period.

Properties

f1.appname

Default:
f1.appname=AmiCore

Description:
  • The application name reported by the process.

f1.logfilename

Default:
f1.logfilename=AmiCore

Description:
  • The base name used for log files. Changing it renames AmiCore.log and AmiCore.amilog, and changes the prefix on the rotated standard output, standard error, and garbage collection files.

ami.log.messages

Default:
ami.log.messages=true

Description:
  • Whether incoming and outgoing messages on realtime connections are logged by default.
  • Leaving this enabled on a high-throughput instance produces substantial log volume.

ami.amilog.stats.period

Default:
ami.amilog.stats.period=15 SECONDS

Description:
  • How often runtime statistics are recorded to log/AmiCore.stats.
  • Also how often OpenTelemetry export sends, when it is turned on.

ami.amilog.stats.os.period

Default:
ami.amilog.stats.os.period=1 MINUTE

Description:
  • How often operating-system and filesystem statistics are recorded.

ami.amilog.stats.retention.count

Default:
ami.amilog.stats.retention.count=10

Description:
  • How many rotated statistics files are kept. At each start the files move up one number and the oldest beyond this count is deleted, so copy them elsewhere before restarting to keep older history.

AmiScript session logging

Calls to session.log(...) and session.warn(...) in AmiScript are not logged by default. Two speedlogger streams enable them, both supplied commented out in config/defaults.properties:

speedlogger.stream.AMISCRIPT.SESSION.LOG=SIMPLE_APPENDER;FILE_SINK;INF
speedlogger.stream.AMISCRIPT.SESSION.WARN=SIMPLE_APPENDER;FILE_SINK;WRN

Uncomment the streams you need in config/local.properties rather than editing the shipped defaults file.

Gateway logging

The Gateway adds two logging properties of its own, covered in Gateway Configuration:

  • ami.gateway.log.messages
  • ami.gateway.log.stats.period.millis