Universal Messaging Enterprise Manager : Logs Panel
Each Universal Messaging Realm Server has a log file within the data directory called nirvana.log. The Enterprise Manager provides a panel that displays real time log messages as they are written to the log file. This enables you to remotely view the activity on a realm as it is happening. The Universal Messaging Administration API also provides the ability to consume the log file entries from an nRealmNode. See the code example "Monitor the Remote Realm Log and Audit File" for an illustration of usage.
The Universal Messaging log file will contain useful information about various activities, such as connection attempts, channels being located and subscribed to as well as status and warning information.
The Logs Panel
The Enterprise Manager provides a panel for each realm where the log files can be viewed. To view the log files, click on the realm node from the namespace and select the panel labeled 'Monitor' and then select the 'Logs' tab. This will show the live log messages for the selected realm. The log panel will automatically replay the last 20 log entries from the Realm Server and then each entry thereafter. The image below shows an example of the log panel for a selected realm:
The log panel also provides the ability to stream the log messages to a local file. Clicking on the button labeled 'Start Stream' from the log panel will prompt you to enter the name of the file you wish to stream the log messages to. The stream can be stopped by clicking the same button again.
Understanding the log file
When a server is started, the initial entries in the log file contain useful information about the server's configuration. The following text is an excerpt from a Realm Server log during startup:
[Wed Jun 20 09:37:39 BST 2012],================================================
[Wed Jun 20 09:37:39 BST 2012], Copyright . All rights reserved
[Wed Jun 20 09:37:39 BST 2012],Start date = Wed Jun 20 09:37:39 BST 2012
[Wed Jun 20 09:37:39 BST 2012],Process ID = 3216
[Wed Jun 20 09:37:39 BST 2012],
[Wed Jun 20 09:37:39 BST 2012],Realm Server Details :
[Wed Jun 20 09:37:39 BST 2012], Realm Server name = realm1
[Wed Jun 20 09:37:39 BST 2012], Realm Server version = $Name: $ - $Revision: 1.7 $
[Wed Jun 20 09:37:39 BST 2012], Build Number = Build 11248
[Wed Jun 20 09:37:39 BST 2012], Build Date = June 19 2012
[Wed Jun 20 09:37:39 BST 2012], Data Directory =
C:\\Universal Messaging\\server\\realm1\data
[Wed Jun 20 09:37:39 BST 2012], Extension Directory =
C:\Universal Messaging\server\realm1\plugins\ext
[Wed Jun 20 09:37:39 BST 2012], Low Latency Executor = false
[Wed Jun 20 09:37:39 BST 2012], Realm(s) Reloaded = 1
[Wed Jun 20 09:37:39 BST 2012], Channels Reloaded = 8
[Wed Jun 20 09:37:39 BST 2012], Queues Reloaded = 0
[Wed Jun 20 09:37:39 BST 2012], Interfaces Reloaded = 1
[Wed Jun 20 09:37:39 BST 2012],
[Wed Jun 20 09:37:39 BST 2012],Operating System Environment :
[Wed Jun 20 09:37:39 BST 2012], OS Name = Windows 7
[Wed Jun 20 09:37:39 BST 2012], OS Version = 6.1
[Wed Jun 20 09:37:39 BST 2012], OS Architecture = x86
[Wed Jun 20 09:37:39 BST 2012], Available Processors = 4
[Wed Jun 20 09:37:39 BST 2012],
[Wed Jun 20 09:37:39 BST 2012],Java Environment :
[Wed Jun 20 09:37:39 BST 2012], Java Vendor = Sun Microsystems Inc.
[Wed Jun 20 09:37:39 BST 2012], Java Vendor URL = http://java.sun.com/
[Wed Jun 20 09:37:39 BST 2012], Java Version = 1.6.0_30
[Wed Jun 20 09:37:39 BST 2012], Memory Allocation = 494 MB
[Wed Jun 20 09:37:39 BST 2012], Memory Warning = 420 MB
[Wed Jun 20 09:37:39 BST 2012], Memory Emergency = 465 MB
[Wed Jun 20 09:37:39 BST 2012], Clock Adjustment = 0ms
[Wed Jun 20 09:37:39 BST 2012],Startup: Starting Realm status monitoring
[Wed Jun 20 09:37:39 BST 2012], Nanosecond delay = Supported
[Wed Jun 20 09:37:39 BST 2012], Time Zone = Greenwich Mean Time
[Wed Jun 20 09:37:39 BST 2012],Startup: Stored Certificate and private key
in servers keystore
[Wed Jun 20 09:37:39 BST 2012],Startup: Completed Realm Public and Private RSA Key
[Wed Jun 20 09:37:39 BST 2012], Security Provider 0 = SUN version 1.6
[Wed Jun 20 09:37:39 BST 2012],Startup: Reloading Realm Public for realm1
[Wed Jun 20 09:37:39 BST 2012],Startup: Cluster cryptograhic initialisation, complete
[Wed Jun 20 09:37:39 BST 2012], Security Provider 1 = SunRsaSign version 1.5
[Wed Jun 20 09:37:39 BST 2012], Security Provider 2 = SunJSSE version 1.6
[Wed Jun 20 09:37:39 BST 2012], Security Provider 3 = SunJCE version 1.6
[Wed Jun 20 09:37:39 BST 2012], Security Provider 4 = SunJGSS version 1.0
[Wed Jun 20 09:37:39 BST 2012], Security Provider 5 = SunSASL version 1.5
[Wed Jun 20 09:37:39 BST 2012], Security Provider 6 = XMLDSig version 1.0
[Wed Jun 20 09:37:39 BST 2012], Security Provider 7 = SunPCSC version 1.6
[Wed Jun 20 09:37:39 BST 2012], Security Provider 8 = SunMSCAPI version 1.6
[Wed Jun 20 09:37:39 BST 2012],================================================
The above sequence of log entries can be found at the beginning of the Universal Messaging log file, and shows information such as when the realm was started, the build number and build date of the Universal Messaging Server, as well as environmental information like, OS, Java version, timezone.
Each log entry contains a date, the log level as well as the log message itself, in the format:
[DATE_TIME],LOG_LEVEL,Message
It is also possible to configure the name of the Java package that the message originates from and the name of the thread the message is being logged from. See the section
Realm Configuration for related information.
The Universal Messaging log level is a level from 0 to 6 that determines what information is written to the log. Log level 0 is the most verbose level of logging and on a heavily utilised server will produce a lot of log output. Log level 6 is the least verbose level, and will produce low levels of log output. The log level of each log message corresponds to a value from 0 to 6. The following list explains the log file messages levels and how they correspond to the values:
0 - TRACE (Log level 0 will output any log entries with a level in the range 0-6; this is the most verbose level)
1 - DEBUG (Log level 1 will output any log entries with a level in the range 1-6)
2 - INFO (Log level 2 will output any log entries with a level in the range 2-6)
3 - WARN (Log level 3 will output any log entries with a level in the range 3-6)
4 - ERROR (Log level 4 will output any log entries with a level in the range 4-6)
5 - FATAL (Log level 5 will output any log entries with a level in the range 5-6)
6 - LOG (Log level 6 will output any log entries with a level of 6; this is the least verbose level)
Log levels can be changed dynamically on the server by using the Config Panel (see
Realm Configuration). The log file has a maximum size associated with it. When the maximum file size is reached, the log file will automatically roll, and rename the old log file to _old and create a new log file . The maximum size for a log file is set to 10000000 bytes (approximately 10MB). This value can be changed within the
nserver.conf or
Server_Common.conf file in the
server/<realm>/bin directory of your installation, where
<realm> is the name of the Universal Messaging realm. You need to modify the -DLOGSIZE property within this file to change the size.
Note: nserver.conf is used if you start the realm server manually, e.g. from the command line. Server_Common.conf is used if you start the realm server as a Windows service or as a UNIX daemon.
Other Logging Frameworks
By default, Universal Messaging uses a built in logging framework, but there is also the capability to use third party open source frameworks. Currently, we support the Logback (
http://logback.qos.ch/) and Log4J2 (
http://logging.apache.org/log4j/2.x/) frameworks.
To configure Universal Messaging to use one of these frameworks, you can pass a
-DLOG_FRAMEWORK parameter with the values LOGBACK or LOG4J2 (see
Server Parameters).
These frameworks are configured using XML configuration files loaded from the classpath. The Universal Messaging installation provides default versions of these configuration files in the lib directory. These files can be modified in order to produce the desired logging output. For more information on configuration see the official documentation of the relevant framework.
The Log Manager
Universal Messaging has 3 different log managers for archiving old log files. When a log file reaches its maximum size, the log manager will attempt to archive it, and a new log file will become active. Options such as the number of log files to keep, and the maximum size of a log file are configurable through the logging section of the Config Panel (see
Realm Configuration). When a log file is archived and a new log file created, realm specific information such as Universal Messaging version number will be printed to the start of the new log in a similar way to when a realm is started. Each log manager uses a different method to store log files once they are not the active logs for the realm.
ROLLING_OLD : This log manager uses 2 log files. The active log file is stored with the default log name, and the most recently rolled log file is stored with _old appended to the log name. e.g. nirvana.log and nirvana.log_old
ROLLING_DATE : The rolling date manager stores a configurable number of log files (RolledLogFileDepth). Rolled log files are stored with the date they were rolled appended to the active log file name. e.g. nirvana.logWed-Sep-14-02-31-40-117-BST-2011.
ROLLING_NUMBER : The numbered log manager stores a configurable number of log files (RolledLogFileDepth). Rolled log files are stored with a numbered index appended to the file name e.g. nirvana.log3 is the 3rd oldest log file