Managing ADSS Server Logs
ADSS Server uses Tomcat log4j for Trace/ Debug log file management. Tomcat log4j allows you to configure various aspects of log generation such as log file path, log file name, log file size, log levels, number of logs to maintain, log creation date etc. Tomcat log4j is described here: http://logging.apache.org/log4j.
By default ADSS Server generates a new log file every day for each of its managed logs and there is no restriction on the number of logs to be maintained or log file size. The name of a log file starts with the service/module which is creating that log e.g. signing.log. When a new log file is created (on a new day) the old log file name is changed to include the date appended with its file name i.e. signing.log.2011-03-01 and the new file name becomes signing.log.
A typical log file snapshot is shown below:
The log file is tab separated and contains the following information:
Date: Date in descriptive form
Thread Name: A unique Operating System defined thread name assigned to each user session
Log level: Defines what level of log this is i.e. DEBUG, INFO, ERROR
Class Name: Class name of the source code that has generated this log record
Message: The message generated by the program at a particular instance of time
The level of detail recorded within the log files can be changed by editing these settings inside the relevant ADSS Server component i.e:
- [ADSS Server Home]/core/log.xml
- [ADSS Server Home]/console/log.xml
- [ADSS Server Home]/service/log.xml
The following example is a partial snapshot of the log.xml file with some explanations below:
Each item in the screenshot is described below:
Log Directory |
Description |
Log4j appender type |
type = RollingFile The RollingFileAppender is an OutputStreamAppender that writes to the File named in the fileName parameter and rolls the file over according the TriggeringPolicy and the RolloverPolicy. |
Log4j appender name |
name = signing This defines the name of appender. |
Log file name |
fileName = %ADSS_INSTALLATION_DIR%/logs/service/signing.log Define the name of the file to write to. If the file or any of its parent directories does not exist, they will be created. |
Log file pattern |
filePattern = %ADSS_INSTALLATION_DIR%/logs/service/signing/signing.%d{yyyy-MM-dd}-%i.log Defines the pattern of the file name of the archived log file. The format of the pattern should dependent on the RolloverPolicy that is used. The DefaultRolloverPolicy will accept both a date/time pattern compatible with SimpleDateFormat and and/or a %i which represents an integer counter. The pattern also supports interpolation at runtime so any of the Lookups (such as the DateLookup can be included in the pattern. |
Logging layout |
type = PatternLayout Name of the log4j provided class which will manage the ordering and format of the log file. |
Log file content |
pattern = %d{dd MMM yyyy HH:mm:ss} [%t] %-5p %c - %m%n Defines the actual log file contents. Details are:
|
Daily Rolling File Appender |
DailyRollingFileAppender extends FileAppender so that the underlying file is rolled over at a user chosen frequency. |
Log4j appender policy |
type = Policies Defines the policies for log4j appender. |
Log4j appender policy type |
time.type = TimeBasedTriggeringPolicy The TimeBasedTriggeringPolicy causes a rollover once the date/time pattern no longer applies to the active file. This policy accepts an increment attribute which indicates how frequently the rollover should occur based on the time pattern and a modulate boolean attribute. |
Log4j appender policy interval |
interval = 1 How often a rollover should occur based on the most specific time unit in the date pattern. For example, with a date pattern with hours as the most specific item and increment of 4 rollovers would occur every 4 hours. The default value is 1 day. |
Log4j appender policy modulate |
modulate = true Indicates whether the interval should be adjusted to cause the next rollover to occur on the interval boundary. For example, if the item is hours, the current hour is 3 am and the interval is 4 then then the first rollover will occur at 4 am and then next ones will occur at 8 am, noon, 4pm, etc. |
Log4j appender strategy |
type = DefaultRolloverStrategy The default rollover strategy accepts both a date/time pattern and an integer from the filePattern attribute specified on the RollingFileAppender itself. If the date/time pattern is present it will be replaced with the current date and time values. If the pattern contains an integer it will be incremented on each rollover. |
Log4j appender strategy fileIndex |
fileIndex = nomax If set to "max" (the default), files with a higher index will be newer than files with a smaller index. If set to "min", file renaming, and the counter will follow the Fixed Window strategy described above. |
Log4j appender strategy action |
type = Delete Defines the action that gives users more control over what files are deleted at rollover time than what was possible with the DefaultRolloverStrategy max attribute. The Delete action lets users configure one or more conditions that select the files to delete relative to a base directory. |
Base path to delete log files |
basepath = %ADSS_INSTALLATION_DIR%/logs/service Defines the base path from where to start scanning for files to delete. It is Required attribute. |
Condition to delete log files |
type = IfFileName Accepts files whose path (relative to the base path) matches a regular expression or a glob. |
Condition expression to delete log files |
glob = service.* If regex not specified. Matches the relative path (relative to the base path) using a limited pattern language that resembles regular expressions but with a simpler syntax. It is required parameter. |
Nested condition to delete log files |
type = IfLastModified An optional set of nested PathConditions. If any nested conditions exist, they all need to accept the file before it is deleted. Nested conditions are only evaluated if the outer condition accepts a file (if the path name matches). |
Nested condition age to delete log files |
age = P30D Defines the duration. The condition accepts files that are as old or older than the specified duration. |
Log4 logger |
name = com.ascertia.adss.service.signing A logger is a component which will take your logging request and log it. Each class in a project can have an individual logger, or they can all use a common logger. The logger element must have a name attribute specified. Defines the java package that creates this log file. |
Logger level |
level = info Defines the log level. If the log level is set to DEBUG the log file will contain all logs records with log levels DEBUG, INFO and ERROR. If this is set to INFO then only INFO and ERROR log records are created. If set to ERROR only ERROR related log records are generated. The Log Level is followed by the name of the log marker. |
Logger additivity |
additivity = false Appender additivity is a property of loggers to inherit their parent's appenders. By default, all loggers have appender additivity enabled. |
Logger appender reference |
ref = signing Defines the reference to the appender name i.e. logs generated would be write in which file. |
log4j can also be used to create logs on other systems. For more information read the log4j documentation at: http://logging.apache.org/log4j. |
The following settings show how to create settings to limit logs to 10 files, each of 1 MB each. Old log files will be deleted.