The Enterprise Manager Logs Panel
Each Universal Messaging realm server has a log file called nirvana.log within the directory <InstallDir>\UniversalMessaging\server\<InstanceName>\data, where <InstallDir> is the disk root location of your Universal Messaging installation and <InstanceName> is the name of the realm server.
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 contains useful information about various activities, such as connection attempts, channels being located and subscribed to, as well as status and warning information.
About the Logs Panel
The Enterprise Manager provides a panel for each realm where you can view the realm's log file. To view the log file, click the realm node from the namespace, select the Monitoring tab, and then select the Logs tab. This will show the live log messages for the selected realm. The log panel automatically replays 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 enables you to stream the log messages to a local file. Click Start Stream, and then enter the name of the file to which you want to stream the log messages. To stop the stream, click Stop.
Understanding the log file
Entries in the log file have the following general format:
Timestamp LogLevel ThreadName Message
Where:
Timestamp gives the date and time that the entry was created, for example:
[Fri May 18 09:03:46.610 EEST 2018]
The time of day is given in the format hh:mm:ss.ttt, representing hours, minutes, seconds, thousandths of a second.
LogLevel determines the depth of information being logged. It is displayed only if the
EmbedTag logging configuration property is set to true (default is false). See the description later in this section for details of logging levels.
ThreadName is the name of the internal processing thread that generated the log message. This is displayed only if the
DisplayCurrentThread logging configuration property is set to true (default is true).
Message contains the actual information that is being logged.
See the section
Realm Configuration for information about configuration properties.
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 (the entries for LogLevel and ThreadName have been suppressed here for clarity) :
[Fri May 18 09:03:46.610 EEST 2018] ================================================
[Fri May 18 09:03:46.610 EEST 2018] Copyright (c) Software AG Limited. All rights reserved
[Fri May 18 09:03:46.610 EEST 2018] Start date = Fri May 18 09:03:46 EEST 2018
[Fri May 18 09:03:46.610 EEST 2018] Process ID = 9040
[Fri May 18 09:03:46.610 EEST 2018]
[Fri May 18 09:03:46.610 EEST 2018] Realm Server Details :
[Fri May 18 09:03:46.610 EEST 2018] Product = Universal Messaging
[Fri May 18 09:03:46.610 EEST 2018] Realm Server name = umserver
[Fri May 18 09:03:46.610 EEST 2018] Release Identifier = 10.3.0.0.106659
[Fri May 18 09:03:46.610 EEST 2018] Build Date = May 17 2018
[Fri May 18 09:03:46.610 EEST 2018] Data Directory =
C:\SoftwareAG\UniversalMessaging\server\umserver\data
[Fri May 18 09:03:46.610 EEST 2018] Extension Directory =
C:\SoftwareAG\UniversalMessaging\server\umserver\plugins\ext
[Fri May 18 09:03:46.610 EEST 2018] Low Latency Executor = false
[Fri May 18 09:03:46.610 EEST 2018] Has License Manager = true
[Fri May 18 09:03:46.610 EEST 2018] Interfaces Running :
[Fri May 18 09:03:46.610 EEST 2018] 0) nhp0: nhp://0.0.0.0:9000 Running
[Fri May 18 09:03:46.610 EEST 2018]
[Fri May 18 09:03:46.610 EEST 2018] Realm(s) Reloaded = 1
[Fri May 18 09:03:46.610 EEST 2018] Channels Reloaded = 0
[Fri May 18 09:03:46.610 EEST 2018] Queues Reloaded = 0
[Fri May 18 09:03:46.610 EEST 2018] Data Groups Reloaded = 0
[Fri May 18 09:03:46.610 EEST 2018] Interfaces Reloaded = 1
[Fri May 18 09:03:46.610 EEST 2018]
[Fri May 18 09:03:46.610 EEST 2018] Operating System Environment :
[Fri May 18 09:03:46.610 EEST 2018] OS Name = Windows 7
[Fri May 18 09:03:46.610 EEST 2018] OS Version = 6.1
[Fri May 18 09:03:46.610 EEST 2018] OS Architecture = amd64
[Fri May 18 09:03:46.610 EEST 2018] Available Processors = 4
[Fri May 18 09:03:46.610 EEST 2018]
[Fri May 18 09:03:46.610 EEST 2018] Java Environment :
[Fri May 18 09:03:46.610 EEST 2018] Java Vendor = Oracle Corporation
[Fri May 18 09:03:46.610 EEST 2018] Java Vendor URL = http://java.oracle.com/
[Fri May 18 09:03:46.610 EEST 2018] Java Version = 1.8.0_151
[Fri May 18 09:03:46.610 EEST 2018] Java Vendor Name =
Java HotSpot(TM) 64-Bit Server VM 1.8.0_151-b12
[Fri May 18 09:03:46.610 EEST 2018] Memory Allocation = 981 MB
[Fri May 18 09:03:46.610 EEST 2018] Memory Warning = 834 MB
[Fri May 18 09:03:46.610 EEST 2018] Memory Emergency = 922 MB
[Fri May 18 09:03:46.610 EEST 2018] Nanosecond delay = Not Supported
[Fri May 18 09:03:46.610 EEST 2018] Time Zone = Eastern European Time
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 0 = SUN version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 1 = SunRsaSign version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 2 = SunEC version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 3 = SunJSSE version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 4 = SunJCE version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 5 = SunJGSS version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 6 = SunSASL version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 7 = XMLDSig version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 8 = SunPCSC version 1.8
[Fri May 18 09:03:46.610 EEST 2018] Security Provider 9 = SunMSCAPI version 1.8
[Fri May 18 09:03:46.610 EEST 2018] ================================================
[Fri May 18 09:03:46.610 EEST 2018] Startup: Realm Server Startup sequence completed
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 realm server, as well as environmental information like, OS, Java version, timezone.
Apart from the above-mentioned information, the log file on Unix provides details about the maximum number of file descriptors.
[Thu Aug 19 02:30:50.459 EEST 2021] [main] Operating System Environment :
[Thu Aug 19 02:30:50.459 EEST 2021] [main] OS Name = Linux
[Thu Aug 19 02:30:50.459 EEST 2021] [main] OS Version = 3.10.0-1160.6.1.el7.x86_64
[Thu Aug 19 02:30:50.459 EEST 2021] [main] OS Architecture = amd64
[Thu Aug 19 02:30:50.459 EEST 2021] [main] Available Processors = 4
[Thu Aug 19 02:30:50.460 EEST 2021] [main] Physical Memory = 15885 MB
[Thu Aug 19 02:30:50.460 EEST 2021] [main] Total Swap space = 3071 MB
[Thu Aug 19 02:30:50.460 EEST 2021] [main] Max file descriptors = 4096
Log Levels
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 utilized 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
Server_Common.conf file in the
server/<InstanceName>/bin directory of your installation, where
<InstanceName> is the name of the Universal Messaging realm. You need to modify the
-DLOGSIZE property within this file to change the size.
Other Logging Frameworks
By default, Universal Messaging uses a built-in logging framework, but it also supports third-party open-source frameworks including Logback and Log4J2. Note that Log4J2 is supported only in a Docker environment.
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.
When you configure Universal Messaging to use Log4j2 as the logging framework, the Logs panel shows only the Universal Messaging server loggers (com.pcbsys.foundation, com.pcbsys.nirvana.base, com.pcbsys.nirvana.server, com.pcbsys.nirvana.server.handler,com.pcbsys.nirvana.server.plugins, com.pcbsys.nirvana.server.plugins.protocols, com.pcbsys.foundation.security.login). The Logs panel does not show any other loggers defined in the log4j2.xml configuration file.
When Universal Messaging is configured to use Logback as the logging framework, the majority of the server startup messages in the server's nirvana.log file will be written with status ERROR. This happens due to a limitation in Logback that does not provide usage of custom log levels. Therefore, Universal Messaging messages logged with LOG level are translated to ERROR level when Logback is used.
The Log Manager
Universal Messaging has three 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_oldROLLING_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