Skip to content
Andres Gomez Casanova edited this page Jun 3, 2022 · 8 revisions

##Version 1 - Release Candidate##

Enhancements

  • The project has a logo, and it is a typical Colombian Coffee cup. For more information click on the logo.
  • License and links are shown in the installation process.
  • CGTT appender is a new feature that writes messages to a Created Global Temporary Table. The default configuration is completely functional, but it can be customized by modifying the script.
  • The Bash/Korn shell files are formatted and more robust.
  • Drop support for Db2 version 9.7.

Bugs solved

Empty list for the moment.

Version 1 - Beta

  • The internal CONF_LOGGER representation has been changed. Currently, there is no synchronization via triggers between this table and CONF_LOGGERS_EFFECTIVE. The effective table is now dependent on CONF_LOGGERS. All loggers are registered in CONF_LOGGERS, and there is no necessity to insert in both tables to change the configuration, just update the logger in the ConfLoggers table. With the previous modification, the ER diagram has been also changed; CONF_LOGGER_EFFECTIVE has different relationships.
  • Configuration cache was reviewed. Also, Levels and ConfLoggers are in the cache, and they have been included in a set of tests.
  • New appenders could be configured in the utility without modifying the code. They are called dynamically. There are also static appenders that are installed by default (Tables, null).
  • Tables appender is only autonomous. The others should be part of the same transaction (XML is not allowed for autonomous).
  • A specific configuration of an appender is associated with level. This allows sending only a set of messages to a given appender, instead of registering all messages in all appenders. This is another restriction in addition to the logger level, and this increases the granularity of the configuration. For example, you can configure to write any kind of logs to the LOGS table, but send by mail (This appender still does not exist) just lower messages (for example, Fatal and Error). This change has implied the change in the ER diagram.
  • The configuration for the appender is with an XML, and it is stored inline to reduce the IO. An XML schema has been created to include this feature, it is registered in the database and it has been published on the Web site of this project. The XML should be verified before inserting it into the table.
  • New appenders were added: NullAppender that just drops off the message; UTL_FILE_appender that writes the messages in a file via the UTL_FILE module.
  • The two most important procedures, LOG and GET_LOGGER, check the input values. If the given parameters are wrong, the procedures do not throw errors instead, they ignore the parameters to perform the tasks. This reduced the risk of throwing unnecessary errors and stopping the routine execution.
  • Queries have been tuned with the clauses: Optimized for, Fetch first N rows only and Isolation (With XX).
  • New procedure NEXT_LOGS allows seeing the more recent logs since the last call. This helps to see only the most recent message, and the procedure call could be included inside a for and a sleep in the shell to have a similar function to tail -f.
  • Runstats is executed on all tables as part of the installation process.
  • A new procedure was created to register a log (with a hierarchy multilevel) and assign a level directly.
  • The triggers check that is not possible to have two same sons (same name) from the same father. Also, it checks that a logger cannot be the parent itself.
  • The message layout can now include the DB2_SQL_NESTING_LEVEL. This will put the current nesting level where the utility was called.
  • The message replacement algorithm in the LOG procedure was changed, in order to reduce the risks of having layout patterns in the given message (Message could contain %p, for example).
  • DefaultLevel is used as a variable in all code. If you want to change the value, you just need to change it in one place.
  • Similar to DefaultLevel, the size limit of the message is not anchored in all parts to LOGS.MESSAGE. All parts of the code are anchored to the COMPLETE_LOGGER_NAME constant, and that constant anchors LOGS.MESSAGE. This eases the change in the message size.
  • DefaultRootLevelId is used to assign a level where it and none of its ascendancy do not have a configured level.
  • Error codes have changed. Some addition, some movements (I hope this will not happen again), and some deletions.
      • LG0C3
      • LG0P1
      • LG0T1
    • LG002 --> LG0P1
    • LG0C1 --> LG0C2
    • LG0C2 --> LG0C4
    • LG0E2 --> LG0E1
    • LG0E4 --> LG0E2
      • LG0C3
      • LGXE1
      • LG0E3
      • LG0E5
  • All error messages try to have less than 70 characters, or at least part of the reasons are explained in this part. This helps to identify the error when wrapped in another error. Normally, the messages are truncated, and that makes it difficult to identify the problem.
  • Also, the triggers' name has been reduced to clearly identify which trigger generates the signals.
  • The installation scripts have the same structure for the following shells: Linux (shell), Windows CMD, and Windows PowerShell. Linux scripts do not depend on bash; they are independent and they could also work on KSH. In PowerShell, the scripts show the command to load the DB2 profile.
  • Uninstall scripts were improved to deal with different problems.
  • Parameters for the installation and tests scripts were documented in the Wiki
  • Comments to improve performance has been written: LOGS table with Not Logger Initially; Create Array from select via ARRAY_AGG. These features are not used for compatibility or another kind of collateral issues.
  • The README.txt file explains the files and directories included in the release.
  • As part of the documentation, routines and triggers indicate with which suite of tests are tested. This helps to have an idea of what is being tested.
  • Some files exclusive for development purposes have been excluded from the release version. Also, the execution rights have been changed (766 for Unix files only) - Assembly file.
  • Developers have instructions on how to install the utility from the sources. The documentation is in the Wiki.
  • A new set of tests has been created for GetLoggerName.
  • The GET_LOGGER procedure has now a limit of levels for the hierarchy. This prevents the error of cascade nesting.
  • The documentation was improved, and many more sections in the Wiki were created. Each of the extra appenders has a guide on how to install them.
  • Most of the objects have associated comments in order to understand their usage.
  • Unnecessary configuration parameters were deleted.

Version 1 - Alph a##

This version contains the first set of features. For this reason, this section is empty.

Clone this wiki locally