On Jun 16, 2016 11:25 AM, "Paul Benedict" <[email protected]> wrote:
>
> Are you asking me for blue sky thinking, perhaps something like this:
> log.info("Hello, {color:green}, how are you?", "Gary");
>
> For this example, I took the {} placeholder and added some context.

Ok yes, that's what I was talking about. Also:

log.info("Hello {color:green Gary}, how are you?");

Gary
>
> Cheers,
> Paul
>
> On Thu, Jun 16, 2016 at 1:22 PM, Gary Gregory <[email protected]>
wrote:
>>
>> On Thu, Jun 16, 2016 at 11:04 AM, Paul Benedict <[email protected]>
wrote:
>>>
>>> I think color falls into the category of formatting. By that, I mean to
state that colors shouldn't be hardcoded into messages :-) That should
belong to the actual formatter... template string or appender configuration.
>>
>>
>> What would that look like? I do not see how do to that without creating
a lot of custom code.
>>
>> Gary
>>
>>>
>>>
>>> Cheers,
>>> Paul
>>>
>>> On Thu, Jun 16, 2016 at 12:58 PM, Gary Gregory <[email protected]>
wrote:
>>>>
>>>> On Thu, Jun 16, 2016 at 10:39 AM, Gary Gregory <[email protected]>
wrote:
>>>>>
>>>>> On Wed, Jun 15, 2016 at 10:50 PM, Gary Gregory <[email protected]>
wrote:
>>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> See color messages in Maven 3.4.0-SNAPSHOT made me think of the
following.
>>>>>>
>>>>>> Right now, with Jansi on the CP, I can say:
>>>>>>
>>>>>> import static org.fusesource.jansi.Ansi.*;
>>>>>> import static org.fusesource.jansi.Ansi.Color.*;
>>>>>> ...
>>>>>> logger.info(ansi().fg(RED).a("Hello").fg(CYAN).a(" World").reset());
>>>>>>
>>>>>> and the right thing happens on the console.
>>>>>>
>>>>>> If I also have a file appender, I get the escape codes in the file,
which I do not think most people would want.
>>>>>>
>>>>>> The question is, how can we make it simple for users to have their
cake and eat it too?
>>>>>>
>>>>>> With a special Message implementation?
>>>>>>
>>>>>> Thoughts?
>>>>>
>>>>>
>>>>> One way would be to have the non-a() methods (plus reset()) become
no-ops when not using a console appender. But how? We could have a subclass
of JAnsi's Ansi class that gets used. Anyway, I'm just rambling.
>>>>
>>>>
>>>> Still rambling, mostly so I have a place to look back for these notes:
>>>>
>>>> - nope, the reset() method would need to be noop'd.
>>>> - Example of a color message:
org.apache.logging.log4j.core.appender.ConsoleAppenderJAnsiMessageMain
>>>> - JAnsi also supports a special syntax, for example:
>>>>
>>>> "@|red Hello|@ @|cyan World|@"
>>>>
>>>> but if use that like:
>>>>
>>>> logger.info("@|red Hello|@ @|cyan World|@");
>>>>
>>>> JAnsi rendering does not kick in unsurprisingly.
>>>>
>>>> Maybe the Console appender could make sure the JAnsi renderer is used
(optional), so that
>>>>
>>>> logger.info(ansi().render("@|red Hello|@ @|green World|@");
>>>>
>>>> can become:
>>>>
>>>> logger.info("@|red Hello|@ @|green World|@");
>>>>
>>>> and then we can add a renderJansi option to the console appender
but... the decorations still end up in a file appender so we are still in
the same pickle.
>>>>
>>>> Thinking about a MessageRenderer (String render(String)) interface
with two impl: one that calls ansi().render(String) for console appenders
(optionally, if renderJansi=true) and another that strips the decorations
(but this feels heavy).
>>>>
>>>> More rambling:
>>>>
>>>> Instead of:
>>>>
>>>> logger.info(ansi().fg(RED).a("Hello").fg(CYAN).a(" World").reset());
>>>>
>>>> say:
>>>>
>>>> logger.info((Ansi ansi) -> ansi.fg(RED).a("Hello").fg(CYAN).a("
World").reset());
>>>>
>>>> Then we can pass in a custom Ansi subclass that only outputs the
string bits, no escape codes.
>>>>
>>>> Gary
>>>>
>>>>>
>>>>> Gary
>>>>>
>>>>>>
>>>>>> Thank you,
>>>>>> Gary
>>>>>> --
>>>>>> E-Mail: [email protected] | [email protected]
>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>> JUnit in Action, Second Edition
>>>>>> Spring Batch in Action
>>>>>> Blog: http://garygregory.wordpress.com
>>>>>> Home: http://garygregory.com/
>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> E-Mail: [email protected] | [email protected]
>>>>> Java Persistence with Hibernate, Second Edition
>>>>> JUnit in Action, Second Edition
>>>>> Spring Batch in Action
>>>>> Blog: http://garygregory.wordpress.com
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> E-Mail: [email protected] | [email protected]
>>>> Java Persistence with Hibernate, Second Edition
>>>> JUnit in Action, Second Edition
>>>> Spring Batch in Action
>>>> Blog: http://garygregory.wordpress.com
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>>
>>>
>>
>>
>>
>> --
>> E-Mail: [email protected] | [email protected]
>> Java Persistence with Hibernate, Second Edition
>> JUnit in Action, Second Edition
>> Spring Batch in Action
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>
>

Reply via email to