Thanks, I implements MessageFactory and it's works

2013/5/27 Ralph Goers <[email protected]>

> You could use a custom MessageFactory.
>
> public class MyMessageFactory extends ParameterizedMessageFactory {
>
>         private final String objId;
>
>         public MyMessageFactory(Object obj) {
>                 this.objId = obj.toString();
>         }
>
>        @Override
>         public Message newMessage(final String message, final Object...
> params) {
>                 return new ParameterizedMessage("{}: " + message, objId,
> params);
>         }
>
> }
>
>
>
>
> then just do
>
> public class MyClass  {
>
>         private String id = "512";
>
>         private Logger logger =
> LogManager.getLogger("com.mycorp.mycomponent.MyClass", new
> MyMessageFactory(this));
>
>         public doWork() {
>                 logger.error("this is an error");
>         }
>
>         public String toString() {
>                 return this.id;
>         }
> }
>
> When the error is logged you should see "512: this is an error" as the
> message.
>
>
> Ralph
>
> On May 27, 2013, at 8:15 AM, Lucie Boubée wrote:
>
> > 2013/5/27 Remko Popma <[email protected]>
> >
> >>
> >> On 2013/05/27, at 23:50, Lucie Boubée <[email protected]> wrote:
> >>
> >>> Hi,
> >>>
> >>> I use log4j2 beta 6 and I would like to add a prefix to all my
> messages.
> >>> This prefix is passed to the constructor parameter and it depends on
> the
> >>> instance of the class. So we're at the object level (not class or
> >> thread).
> >>>
> >>> For example, I have an A class instantiated like new A(152), so when I
> >> use
> >>> log.error("message") on this class, 152: is written just before the
> >>> message. For new A(155),155: will be displayed instead.
> >>
> >> Do you mean that the call to log.error("message") is inside class A?
> >> In that case, how about simply using
> >> log.error("{} message", myPrefix);
> >> Would that work?
> >>
> >
> > Yes, log.error("message") is calling inside class A.
> > log.error('{} message", myPrefix) work, but I would like to avoid to add
> > the prefix every time I read a log error, like with ThreadContext.
> >
> >>
> >>>
> >>> I try to use ThreadContext.put on the constructor but, I don't know
> when
> >>> logger wiil be call consequently the prefix is set to the last
> >>> ThreadContext called but that does not necessarily correspond to the
> >>> correct class instance
> >>> I ask to stackoverflow (
> >>>
> >>
> http://stackoverflow.com/questions/16723016/how-do-i-add-a-prefix-to-log4j-messages-at-the-object-level
> >> )
> >>> but
> >>> it has not solved my problem.
> >>>
> >>> --
> >>> Lucie
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
> >
> >
> > --
> > Lucie BOUBÉE
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Lucie BOUBÉE

Reply via email to