For logging you can use logging capabilities of built-in components of ATG. ATG provides GenericService class in order to use logging in your component smoothly.
But If your component extends a non-ATG base class, and you are therefore unable to use GenericService as a base, you can still take advantage of ATG logging by implementing atg.nucleus.logging.ApplicationLogging interface.
So if you want to do logging without GenericService you can use this interface.
The logging methods are:
Each of the logging methods can take a string, a Throwable (such as an exception), or both.