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
