|Pete Muir||Aug 17, 2009 10:05 am|
|Ralph Goers||Aug 17, 2009 2:40 pm|
|Pete Muir||Aug 18, 2009 6:37 am|
|Ralph Goers||Aug 18, 2009 7:10 am|
|近藤 健||Aug 18, 2009 9:59 am|
|Pete Muir||Aug 19, 2009 8:31 am|
|Ralph Goers||Aug 19, 2009 9:15 am|
|Ceki Gulcu||Aug 19, 2009 11:17 am|
|Pete Muir||Aug 19, 2009 11:20 am|
|Pete Muir||Aug 19, 2009 11:29 am|
|Ceki Gulcu||Aug 19, 2009 11:42 am|
|Pete Muir||Aug 19, 2009 11:51 am|
|Ceki Gulcu||Aug 19, 2009 12:38 pm|
|Ralph Goers||Aug 19, 2009 1:42 pm|
|Ceki Gulcu||Aug 19, 2009 1:58 pm|
|Ceki Gulcu||Aug 19, 2009 2:15 pm|
|Ralph Goers||Aug 19, 2009 2:21 pm|
|Ralph Goers||Aug 19, 2009 2:31 pm|
|Ceki Gulcu||Aug 19, 2009 2:40 pm|
|近藤 健||Aug 20, 2009 8:22 am|
|Ralph Goers||Aug 20, 2009 8:35 am|
|Takeshi Kondo||Aug 20, 2009 10:07 am|
|ralp...@dslextreme.com||Aug 20, 2009 10:20 am|
|Ceki Gulcu||Aug 20, 2009 1:58 pm|
|Ceki Gulcu||Aug 20, 2009 2:05 pm|
|Takeshi Kondo||Aug 21, 2009 10:28 pm|
|Takeshi Kondo||Aug 22, 2009 10:32 pm||.jar, .jar|
|Ralph Goers||Aug 23, 2009 8:21 am|
|Takeshi Kondo||Aug 23, 2009 8:40 am|
|Ceki Gulcu||Aug 23, 2009 10:38 am|
|Takeshi Kondo||Aug 23, 2009 4:59 pm|
|Ralph Goers||Aug 23, 2009 9:56 pm|
|Ceki Gulcu||Aug 24, 2009 6:14 am|
|Takeshi Kondo||Aug 24, 2009 10:02 am|
|Ceki Gulcu||Aug 24, 2009 10:22 am|
|Takeshi Kondo||Aug 24, 2009 11:05 am|
|Ceki Gulcu||Aug 24, 2009 11:27 am|
|Takeshi Kondo||Aug 24, 2009 12:36 pm|
|Ceki Gulcu||Aug 24, 2009 12:56 pm|
|Takeshi Kondo||Aug 24, 2009 1:15 pm|
|Ceki Gulcu||Aug 24, 2009 1:24 pm|
|Ralph Goers||Aug 24, 2009 1:33 pm|
|Takeshi Kondo||Aug 24, 2009 2:02 pm|
|Ceki Gulcu||Aug 25, 2009 1:32 am|
|Subject:||Re: [slf4j-dev] slf4j i8ln|
|From:||Ceki Gulcu (ce...@qos.ch)|
|Date:||Aug 19, 2009 11:17:56 am|
Pete Muir wrote:
As discussed here https://jira.jboss.org/jira/browse/WBRI-290, we would like to switch to slf4j as our logger (it offers a logging facade, supports MDC/NDC and parameter replacement).
However, as Takeshi highlights here https://jira.jboss.org/jira/browse/WBRI-214, a needed feature is explicit i8n support, and it sounds like Ceki would be happy to accept a contribution for this directly to the slf4j.
Indeed. Assuming we can design a useful i18n extension to sfl4j, I would like it to ship within the slf4j distribution.
Perhaps, to get started, we should discuss the overall design and aims. In the linked issue, Takeshi adds three features in the patch:
- ability to localize a message by providing a resource bundle, which has the same name as the class using the logger (the declaring class)
Using resource bundles for localization make sense. I am unsure whether the resource bundle should be related to a logger's name but we can come back to this later.
- the ability to log an enum value (rather than using a static to hold the message/key)
Using emums? Interesting. How could enums be used instead of String as enum is
not a specific type in itself (in the same way as class is not a type in
What do you mean by static? Perhaps you meant to say String instead of static?
- the ability to associate the level at which to log with the message with the enum (via an annotation) rather than in the call from the declaring class
Takeshi mentioned that his requirement was to be able to change the level of a logging statement without needing to recompile his application. I don't see how annotations help in this case since they also need to be recompiled.
Markers allow for a cleaner way of filtering out messages. Changing the level is unnecessary. For example, if all logging events of level ERROR trigger an alarm, and if a certain ERROR event should not trigger an alarm, you can mark that particular event with the "NO_ALARM" marker.
Instead of debating the requirements, how about code that embodies your vision of the API (assuming everything was possible)?
For example, here is a vision of the i18n API:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); lc.addResourceBundle( aResourceBundle);
Logger loggerA = LoggerFactory.getLogger("A"); Logger loggerB = LoggerFactory.getLogger("B");
// replace key_0 with its corresponding value in aResourceBundle loggerA.info("key_0");
// same as before, but also insert the value of "param" as specified in // the message loggerB.info("key_1", param);
The above is just an *example* of what I mean by "vision" of the API.
You can go a step further an implement something. You may wish to fork SLF4J on git. The url is http://github.com/ceki/slf4j/tree/master
(Takeshi, correct me if this is incorrect). I think we can probably separate these features out when discussing.
I think we would also need:
- ability to specify the resource bundle to use when getting the logger - ability to use statics fields or just a string id embedded in call to logger
Static field of type String? If the field is of type String, it does not matter whether the variable is an instance variable of a static one. (In a nutshell, I don't get it.)
By the way, for quicker response time, you can reach me on irc: irc.freenode.net #slf4j
-- Ceki Gülcü Logback: The reliable, generic, fast and flexible logging framework for Java. http://logback.qos.ch