Uploaded image for project: 'Log Tool'
  1. Log Tool
  2. LOGTOOL-84

Provide mechanism for preparing string representations of logged objects

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • None
    • None

      There are cases where a fine-grained control of the string representation of logged objects in log messages would be useful.

      When logging Class objects for instance, we would like to see the fully-qualified name of the given class in the log message. Currently we get (class|interface) com.acme.Foo, though, as per the implementation of j.l.Class#toString(), which prepends the type of the given class object.

      As workaround, we currently define the log method to accept a String parameter and pass myClass.getName() to it. Having a strongly typed log method which takes the "real" object as parameter seems preferable, though.

      A possible solution could be a mechanism which allows to register to-string converters for given types with a logger:

      //Provided by JBoss Logging API
      public interface StringConverter<T> {
          String createString(T object);
      }
      
      //A project-specific implementation
      public class ClassStringConverter implements StringConverter<Class<?>> {
          public String createString(Class<?> object) {
              return object.getName();
          }
      }
      
      //Project-specific logger, references 1..n converters
      @MessageLogger(projectCode = "HV", converters=ClassStringConverter.class)
      public interface Log extends BasicLogger {
      
          //implementation uses converter to create string representation of given class
          @LogMessage(level = INFO)
          @Message(id = 1, value = "Illegal class %s")
          void illegalClass(Class<?> clazz);
      }
      

      Would such a feature make sense to you?

            dlloyd@redhat.com David Lloyd
            gunnar.morling Gunnar Morling
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: