Currently, PatternLayout calls PatternParser which knows about the various PatternConverters, many of which are imbedded in it. This makes it difficult for users to add their own Converters.
In the logging framework I created each converter identified the conversion characters it supported. Each PatternConverter was required to supply a getKeys() method that returned this list. The equivalent of the PatternLayout contained an array of PatternConverters. During initialization each of these would be called and the list of keys recorded along with the associated converter. To add your own converter all that was necessary was to extend the class and add your new keys to the list of recorded keys along with their converters. The base PatternLayout would then take care of calling the correct converters as necessary.