[jboss-jira] [JBoss JIRA] (JBLOGGING-93) Provide mechanism for preparing string representations of logged objects

Gunnar Morling (JIRA) jira-events at lists.jboss.org
Thu Mar 28 10:05:42 EDT 2013


Gunnar Morling created JBLOGGING-93:
---------------------------------------

             Summary: Provide mechanism for preparing string representations of logged objects
                 Key: JBLOGGING-93
                 URL: https://issues.jboss.org/browse/JBLOGGING-93
             Project: JBoss Logging
          Issue Type: Feature Request
      Security Level: Public (Everyone can see)
          Components: jboss-logging-spi
    Affects Versions: 3.1.2.GA
            Reporter: Gunnar Morling
            Assignee: David Lloyd


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:

{code}
//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);
}
{code}

Would such a feature make sense to you?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list