A Rhino installation includes the following runtime files, in the node directory and logging output.
Node directory
Creating a new Rhino node (by running the create-node.sh
script) involves making a directory for that node.
This directory contains the following files, which that node uses to store state, including configuration, logs and temporary files.
The following table summarises the files for a node with id 101.
File or directory | Description |
---|---|
node-101 |
Instantiated Rhino node. |
node-101/config/* |
Directory containing a set configurations files, which Rhino uses when a node starts (or re-starts). Once the node joins the cluster, it stores and retrieves settings from the in-memory database ("MemDB"). The Rhino SLEE can overwrite files in the config/ directory — for example, if the administrator changes the SLEE’s logging configuration (using management tools), the SLEE updates each node’s logging.xml file at runtime. Before a node can join the cluster, Rhino needs to load the logging configuration from logging.xml and then load rest of the cluster’s configuration from the database. |
node-101/dumpthreads.sh |
Script for sending a SIGQUIT to Rhino to cause a threaddump. |
node-101/generate-configuration |
Script used internally to populate a node’s working directory with templated configuration files. |
node-101/generate-system-report.sh |
Script used to produce an archive containing useful debugging information. |
node-101/init-management-db.sh |
Script for reinitializing the Rhino postgres database. |
node-101/read-config-variables |
Script used internally for performing templating operations. |
node-101/README.postgres |
Postgres database setup information. |
node-101/rhino-common |
Contains script functions common to multiple scripts. |
node-101/run-compiler.sh |
Script used by Rhino to compile dynamically generated code. |
node-101/run-jar.sh |
Script used by Rhino to run the external 'jar' application. |
node-101/start-rhino.sh |
Script used to start Rhino. |
node-101/stop-rhino.sh |
Script used to stop Rhino. |
node-101/consolelog.sh |
Script used by some Rhino boot scripts to capture Rhino console logging to file. |
node-101/work |
Rhino working directory. |
node-101/work/deployments |
Directory that stores deployable units, component jars, code generated as a result of deployment actions, and any other deployment-related information Rhino requires. |
node-101/work/gc.log |
Log containing Java garbage collection messages. This log is configured, by default, to roll over at 100MB with a maximum of 5 files kept. |
node-101/work/log |
Directory containing Rhino’s main log files. These constantly change and rotate, as the Rhino SLEE continually outputs logging information. Rhino automatically manages the total size of the most volatile logs in this directory (to keep them from taking up too much disk space). |
node-101/work/log/alarms.csv |
Log containing information on all alarms that have been raised. This log is configured, by default, to roll over at 100MB with a maximum of 10 files kept. |
node-101/work/log/audit.log |
Log containing licensing auditing. This log rolls over at 10MB, but older log files will not be cleaned up automatically. Messages are logged to here extremely minimally during regular operations, so accumulation should not be of any concern. |
node-101/work/log/permissions.log |
Log containing management permissions access information. This log rolls over at 100MB, but older log files will not be cleaned up automatically. Messages are logged to here extremely minimally during regular operations, so accumulation should not be of any concern. |
node-101/work/log/management.csv |
Log containing information on all administrative operations that were performed. This log rolls over at 100MB, but older log files will not be cleaned up automatically. Messages are logged to here extremely minimally during regular operations, so accumulation should not be of any concern. |
node-101/work/log/rhino.log |
Log combining all Rhino logs. This log is configured, by default, to roll over at 100MB with a maximum of 10 files kept. |
node-101/work/logging-status.log |
Log containing diagnostic information about the logging system itself (Log4j 2 status logger). If the logging system itself is critically broken then errors will be output to here. This log rolls over at 100MB, but older log files will not be cleaned up automatically. Messages are logged to here extremely minimally during regular operations, so accumulation should not be of any concern. |
node-101/work/start-rhino.sh |
Temporary directory.
Used when starting the Rhino SLEE — the system copies files in the config directory here, and then makes all variable substitutions (replacing all |
node-101/work/start-rhino.sh/config/* |
Working set of configuration files in use by an active Rhino node |
node-101/work/state |
Temporary directory. |
node-101/work/tmp/* |
Savanna primary component runtime state. |
![]() |
The tmp/ , deployments/ and start-rhino.sh/ directories are temporary directories.
However nothing in the work directory should be deleted while the node is running (except for tmp/ — as long as no deployment action is in progress, and any old logs in log/ .)
|
Logging output
The Rhino SLEE uses the Apache Log4j 2 libraries for logging.
In the default configuration, it sends logging output to both the standard error stream (the user’s console) and also the following log files in the work/log
directory:
-
rhino.log — all logs Rhino has output
-
audit.log — auditing information
-
alarms.csv — raised alarms information
-
management.csv — management operations performed
-
permissions.log — management permissions access information
![]() |
For more on Rhino SLEE’s logging system and how to configure it, see the Rhino Administration and Deployment Guide. |
Log File Format
Each statement in the log file has a particular structure. Here is an example:
2005-12-13 17:02:33.019+1200 INFO [rhino.alarm.manager] <Thread-4> {} Alarm 56875825090732034 (Node 101, 13-Dec-05 13:31:54.373): Major [rhino.license] License with serial '107baa31c0e' has expired.
This includes:
Example | Field | Description |
---|---|---|
2005-12-13 17:02:33.019+1200 |
Current date |
The 13th of December, 2005 at 5:02pm, 33 seconds and 19 milliseconds in UTC+1200 timezone. The milliseconds value is often useful for determining if log messages are related; if they occur within a few milliseconds of each other, then they probably have a causal relationship. Also, if there is a time-out in the software somewhere, that time-out may often be found by looking at this timestamp. |
INFO |
Log level |
|
[rhino.alarm.manager] |
Logger name |
Every log message has a key, and this shows what part of Rhino this log message came from. Verbosity of each logger key can be controlled, as also discussed in Rhino Administration and Deployment Guide. |
<Thread-4> |
Thread identifier |
The name of the thread that output this message. |
{} |
Mapped diagnostic context (MDC) |
Map containing contextual information pertaining to the thread that logged this message.
By default, this contains the ID of the SLEE transaction (if one was active) and the current namespace (if running in the non-default namespace).
An example could be |
Alarm 56875825090732034 (Node 101, 13-Dec-05 13:31:54.373): Major [rhino.license] License with serial '107baa31c0e' has expired. |
Actual log message |
In this case, an alarm message. |