You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by donald larmee <dl...@utopiansoft.com> on 2003/02/06 23:39:26 UTC

RE: Logging multiple strings

Sorry for the delay in response.

If you plan to attach your JDBCAppdender to an AsynchronousAppender, be 
warned that the MDC style approach will not work as the context of the 
Thread that logs the message will be different from the Appender that 
actually writes the data.

-D

At 07:54 PM 1/27/2003 +0530, you wrote:



>hi,
>
>but what if i have multiple columns ?
>i am planning to use "exec proc(?)" and try to tokenize in stored proc
>itself
>
>regards,
>Amandeep
>
>
>
> 
>
>                     "Shapira, 
>
>                     Yoav"                To:     "Log4J Users List" 
> <lo...@jakarta.apache.org>
>                     <Yoav.Shapira@       cc: 
>
>                     mpi.com>             Subject:     RE: Logging 
> multiple strings
> 
>
>                     01/27/2003 
>
>                     07:41 
> PM 
>
>                     Please 
> respond 
>
>                     to 
> "Log4J 
>
>                     Users 
> List" 
>
> 
>
> 
>
>
>
>
>
>Howdy,
>Have you considering the use of a mapped diagnostic context (MDC)?  The
>pattern would include %X{username} %X{applicationName}
>%X{transactionName} etc.  See the JavaDoc for the MDC class and the
>manual for examples.
>
>Yoav Shapira
>Millennium ChemInformatics
>
>
> >-----Original Message-----
> >From: serge.arsenault@desjardins.com
> >[mailto:serge.arsenault@desjardins.com]
> >Sent: Friday, January 24, 2003 3:57 PM
> >To: Log4J Users List
> >Subject: Logging multiple strings
> >
> >
> >I'm thinking of using log4j with the jdbc appender, to log some
>structured
> >information regarding the usage of my applications. I log with
>something
> >like:
> >
> >myLogger.info( userName + applicationName + transactionName );
> >
> >I would like to be able to use a JDBC conversion pattern that would
>allow
> >me to load the user name in a column, the application name into another
> >column, and the
> >transaction name into a third column. But, since the logger only
>accepts a
> >single string as parameter, there is no way once we get into the layout
> >specification to make a
> >reference to individual elements. The layout only knows that my string
> >corresponds to the %m specification.
> >
> >What I would need is the possibility of calling the logger with a
> >collection of strings; then, in the layout, I could reference each
>string
> >with a %1m , %2m and %3m
> >specification - something like
> >... INSERT INTO TEST_TABLE ( userName, transactionName, applicationName
>)
> >VALUES ( "%1m" , "%3m", "%2m" ) " .
> >
> >I know there is no such thing in the package right now, and I don't
>expect
> >it any time soon, but do you think it would be feasible? And would it
>be
> >useful, or am I the
> >only one with that kind of requirements?
> >
> >Serge Arsenault
> >
> >
> >
> >
> >--
> >To unsubscribe, 
> e-mail:   <ma...@jakarta.apache.org>
> >For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>
>
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>


+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   donald h. larmee                               dlarmee@utopiansoft.com
                                                                          804.301.UTOP
                          utopian software concepts, inc.
                                  www.utopiansoft.com
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-user-help@jakarta.apache.org


RE: Logging multiple strings

Posted by donald larmee <dl...@utopiansoft.com>.
Well upon a bit of further investigation, it would appear to only be an 
issue when using the non-standard 'contrib' version of the 
JDBCAppender.  The JDBCAppender that is part of the log4j distribution 
proper works just fine....

-d


At 09:52 AM 2/7/2003 -0500, donald larmee wrote:

>Hmm... perhapsI am attempting to use the MDC incorrectly.  I have tried to 
>use this technique in the past (with Danko Mannhaupt's variant of  Thomas 
>Fenner's JDBCAppender that is included as part of the 'contrib' code in 
>1.2.7... available here-->http://www.dankomannhaupt.de/projects/index.html)
>
>If I do something like the following:
>
>     ....
>     org.apache.log4j.MDC.put("account", "123456789");
>     log.info("The account number should be passed to the Appender via MDC");
>     ....
>
>And then inside my SqlHandler, (which intercepts the LoggingEvent), I try 
>to retrieve the account pushed into the MDC map by way of:
>
>     ....
>     String account = (String) theLogEvent.getMDC("account");
>     ....
>
>
>I get null when I use a JDBCAppender attached to an 
>AsyncAppender.  However, if I change my log4j.xml config to bypass the 
>AsyncAppender and use the JDBCAppender directly, I can successfully 
>retrieve the account from the MDC...  Is there something I am 
>missing?  For what it is worth, this experiment was   attempted with 
>v1.2.7 under WebLogic 7.0.
>
>-don
>
>
>At 11:41 PM 2/6/2003 +0100, Ceki Gülcü wrote:
>
>
>>I do not think that is correct. AsyncAppender will make sure to set the 
>>proper MDC values in the LoggingEvent. As long as you access the MDC 
>>through the LoggingEvent you are safe.
>>
>>At 17:39 06.02.2003 -0500, you wrote:
>>>Sorry for the delay in response.
>>>
>>>If you plan to attach your JDBCAppdender to an AsynchronousAppender, be 
>>>warned that the MDC style approach will not work as the context of the 
>>>Thread that logs the message will be different from the Appender that 
>>>actually writes the data.
>>>
>>>-D
>>>
>>>At 07:54 PM 1/27/2003 +0530, you wrote:
>>>
>>>
>>>
>>>>hi,
>>>>
>>>>but what if i have multiple columns ?
>>>>i am planning to use "exec proc(?)" and try to tokenize in stored proc
>>>>itself
>>>>
>>>>regards,
>>>>Amandeep
>>>>
>>>>
>>>>
>>>>
>>>>                     "Shapira,
>>>>                     Yoav"                To:     "Log4J Users List" 
>>>> <lo...@jakarta.apache.org>
>>>>                     <Yoav.Shapira@       cc:
>>>>                     mpi.com>             Subject:     RE: Logging 
>>>> multiple strings
>>>>
>>>>                     01/27/2003
>>>>                     07:41 PM
>>>>                     Please respond
>>>>                     to "Log4J
>>>>                     Users List"
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>Howdy,
>>>>Have you considering the use of a mapped diagnostic context (MDC)?  The
>>>>pattern would include %X{username} %X{applicationName}
>>>>%X{transactionName} etc.  See the JavaDoc for the MDC class and the
>>>>manual for examples.
>>>>
>>>>Yoav Shapira
>>>>Millennium ChemInformatics
>>>>
>>>>
>>>> >-----Original Message-----
>>>> >From: serge.arsenault@desjardins.com
>>>> >[mailto:serge.arsenault@desjardins.com]
>>>> >Sent: Friday, January 24, 2003 3:57 PM
>>>> >To: Log4J Users List
>>>> >Subject: Logging multiple strings
>>>> >
>>>> >
>>>> >I'm thinking of using log4j with the jdbc appender, to log some
>>>>structured
>>>> >information regarding the usage of my applications. I log with
>>>>something
>>>> >like:
>>>> >
>>>> >myLogger.info( userName + applicationName + transactionName );
>>>> >
>>>> >I would like to be able to use a JDBC conversion pattern that would
>>>>allow
>>>> >me to load the user name in a column, the application name into another
>>>> >column, and the
>>>> >transaction name into a third column. But, since the logger only
>>>>accepts a
>>>> >single string as parameter, there is no way once we get into the layout
>>>> >specification to make a
>>>> >reference to individual elements. The layout only knows that my string
>>>> >corresponds to the %m specification.
>>>> >
>>>> >What I would need is the possibility of calling the logger with a
>>>> >collection of strings; then, in the layout, I could reference each
>>>>string
>>>> >with a %1m , %2m and %3m
>>>> >specification - something like
>>>> >... INSERT INTO TEST_TABLE ( userName, transactionName, applicationName
>>>>)
>>>> >VALUES ( "%1m" , "%3m", "%2m" ) " .
>>>> >
>>>> >I know there is no such thing in the package right now, and I don't
>>>>expect
>>>> >it any time soon, but do you think it would be feasible? And would it
>>>>be
>>>> >useful, or am I the
>>>> >only one with that kind of requirements?
>>>> >
>>>> >Serge Arsenault
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >--
>>>> >To unsubscribe, 
>>>> e-mail:   <ma...@jakarta.apache.org>
>>>> >For additional commands, e-mail: 
>>>> <ma...@jakarta.apache.org>
>>>>
>>>>
>>>>--
>>>>To unsubscribe, 
>>>>e-mail:   <ma...@jakarta.apache.org>
>>>>For additional commands, e-mail: 
>>>><ma...@jakarta.apache.org>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>--
>>>>To unsubscribe, 
>>>>e-mail:   <ma...@jakarta.apache.org>
>>>>For additional commands, e-mail: 
>>>><ma...@jakarta.apache.org>
>>>
>>>
>>>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>>>   donald h. larmee                               dlarmee@utopiansoft.com
>>>804.301.UTOP
>>>                          utopian software concepts, inc.
>>>                                  www.utopiansoft.com
>>>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>>
>>--
>>Ceki
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>>
>
>
>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>   donald h. larmee                               dlarmee@utopiansoft.com
> 
>804.301.UTOP
>                          utopian software concepts, inc.
>                                  www.utopiansoft.com
>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>
>


+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   donald h. larmee                               dlarmee@utopiansoft.com
                                                                          804.301.UTOP
                          utopian software concepts, inc.
                                  www.utopiansoft.com
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-user-help@jakarta.apache.org


RE: Logging multiple strings

Posted by donald larmee <dl...@utopiansoft.com>.
Hmm... perhapsI am attempting to use the MDC incorrectly.  I have tried to 
use this technique in the past (with Danko Mannhaupt's variant of  Thomas 
Fenner's JDBCAppender that is included as part of the 'contrib' code in 
1.2.7... available here-->http://www.dankomannhaupt.de/projects/index.html)

If I do something like the following:

     ....
     org.apache.log4j.MDC.put("account", "123456789");
     log.info("The account number should be passed to the Appender via MDC");
     ....

And then inside my SqlHandler, (which intercepts the LoggingEvent), I try 
to retrieve the account pushed into the MDC map by way of:

     ....
     String account = (String) theLogEvent.getMDC("account");
     ....


I get null when I use a JDBCAppender attached to an 
AsyncAppender.  However, if I change my log4j.xml config to bypass the 
AsyncAppender and use the JDBCAppender directly, I can successfully 
retrieve the account from the MDC...  Is there something I am missing?  For 
what it is worth, this experiment was   attempted with v1.2.7 under 
WebLogic 7.0.

-don


At 11:41 PM 2/6/2003 +0100, Ceki Gülcü wrote:


>I do not think that is correct. AsyncAppender will make sure to set the 
>proper MDC values in the LoggingEvent. As long as you access the MDC 
>through the LoggingEvent you are safe.
>
>At 17:39 06.02.2003 -0500, you wrote:
>>Sorry for the delay in response.
>>
>>If you plan to attach your JDBCAppdender to an AsynchronousAppender, be 
>>warned that the MDC style approach will not work as the context of the 
>>Thread that logs the message will be different from the Appender that 
>>actually writes the data.
>>
>>-D
>>
>>At 07:54 PM 1/27/2003 +0530, you wrote:
>>
>>
>>
>>>hi,
>>>
>>>but what if i have multiple columns ?
>>>i am planning to use "exec proc(?)" and try to tokenize in stored proc
>>>itself
>>>
>>>regards,
>>>Amandeep
>>>
>>>
>>>
>>>
>>>                     "Shapira,
>>>                     Yoav"                To:     "Log4J Users List" 
>>> <lo...@jakarta.apache.org>
>>>                     <Yoav.Shapira@       cc:
>>>                     mpi.com>             Subject:     RE: Logging 
>>> multiple strings
>>>
>>>                     01/27/2003
>>>                     07:41 PM
>>>                     Please respond
>>>                     to "Log4J
>>>                     Users List"
>>>
>>>
>>>
>>>
>>>
>>>
>>>Howdy,
>>>Have you considering the use of a mapped diagnostic context (MDC)?  The
>>>pattern would include %X{username} %X{applicationName}
>>>%X{transactionName} etc.  See the JavaDoc for the MDC class and the
>>>manual for examples.
>>>
>>>Yoav Shapira
>>>Millennium ChemInformatics
>>>
>>>
>>> >-----Original Message-----
>>> >From: serge.arsenault@desjardins.com
>>> >[mailto:serge.arsenault@desjardins.com]
>>> >Sent: Friday, January 24, 2003 3:57 PM
>>> >To: Log4J Users List
>>> >Subject: Logging multiple strings
>>> >
>>> >
>>> >I'm thinking of using log4j with the jdbc appender, to log some
>>>structured
>>> >information regarding the usage of my applications. I log with
>>>something
>>> >like:
>>> >
>>> >myLogger.info( userName + applicationName + transactionName );
>>> >
>>> >I would like to be able to use a JDBC conversion pattern that would
>>>allow
>>> >me to load the user name in a column, the application name into another
>>> >column, and the
>>> >transaction name into a third column. But, since the logger only
>>>accepts a
>>> >single string as parameter, there is no way once we get into the layout
>>> >specification to make a
>>> >reference to individual elements. The layout only knows that my string
>>> >corresponds to the %m specification.
>>> >
>>> >What I would need is the possibility of calling the logger with a
>>> >collection of strings; then, in the layout, I could reference each
>>>string
>>> >with a %1m , %2m and %3m
>>> >specification - something like
>>> >... INSERT INTO TEST_TABLE ( userName, transactionName, applicationName
>>>)
>>> >VALUES ( "%1m" , "%3m", "%2m" ) " .
>>> >
>>> >I know there is no such thing in the package right now, and I don't
>>>expect
>>> >it any time soon, but do you think it would be feasible? And would it
>>>be
>>> >useful, or am I the
>>> >only one with that kind of requirements?
>>> >
>>> >Serge Arsenault
>>> >
>>> >
>>> >
>>> >
>>> >--
>>> >To unsubscribe, 
>>> e-mail:   <ma...@jakarta.apache.org>
>>> >For additional commands, e-mail: 
>>> <ma...@jakarta.apache.org>
>>>
>>>
>>>--
>>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>>
>>>
>>>
>>>
>>>
>>>
>>>--
>>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>>
>>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>>   donald h. larmee                               dlarmee@utopiansoft.com
>>804.301.UTOP
>>                          utopian software concepts, inc.
>>                                  www.utopiansoft.com
>>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>
>--
>Ceki
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>
>


+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   donald h. larmee                               dlarmee@utopiansoft.com
                                                                          804.301.UTOP
                          utopian software concepts, inc.
                                  www.utopiansoft.com
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-user-help@jakarta.apache.org


RE: Logging multiple strings

Posted by Ceki Gülcü <ce...@qos.ch>.
I do not think that is correct. AsyncAppender will make sure to set the 
proper MDC values in the LoggingEvent. As long as you access the MDC 
through the LoggingEvent you are safe.

At 17:39 06.02.2003 -0500, you wrote:
>Sorry for the delay in response.
>
>If you plan to attach your JDBCAppdender to an AsynchronousAppender, be 
>warned that the MDC style approach will not work as the context of the 
>Thread that logs the message will be different from the Appender that 
>actually writes the data.
>
>-D
>
>At 07:54 PM 1/27/2003 +0530, you wrote:
>
>
>
>>hi,
>>
>>but what if i have multiple columns ?
>>i am planning to use "exec proc(?)" and try to tokenize in stored proc
>>itself
>>
>>regards,
>>Amandeep
>>
>>
>>
>>
>>                     "Shapira,
>>                     Yoav"                To:     "Log4J Users List" 
>> <lo...@jakarta.apache.org>
>>                     <Yoav.Shapira@       cc:
>>                     mpi.com>             Subject:     RE: Logging 
>> multiple strings
>>
>>                     01/27/2003
>>                     07:41 PM
>>                     Please respond
>>                     to "Log4J
>>                     Users List"
>>
>>
>>
>>
>>
>>
>>Howdy,
>>Have you considering the use of a mapped diagnostic context (MDC)?  The
>>pattern would include %X{username} %X{applicationName}
>>%X{transactionName} etc.  See the JavaDoc for the MDC class and the
>>manual for examples.
>>
>>Yoav Shapira
>>Millennium ChemInformatics
>>
>>
>> >-----Original Message-----
>> >From: serge.arsenault@desjardins.com
>> >[mailto:serge.arsenault@desjardins.com]
>> >Sent: Friday, January 24, 2003 3:57 PM
>> >To: Log4J Users List
>> >Subject: Logging multiple strings
>> >
>> >
>> >I'm thinking of using log4j with the jdbc appender, to log some
>>structured
>> >information regarding the usage of my applications. I log with
>>something
>> >like:
>> >
>> >myLogger.info( userName + applicationName + transactionName );
>> >
>> >I would like to be able to use a JDBC conversion pattern that would
>>allow
>> >me to load the user name in a column, the application name into another
>> >column, and the
>> >transaction name into a third column. But, since the logger only
>>accepts a
>> >single string as parameter, there is no way once we get into the layout
>> >specification to make a
>> >reference to individual elements. The layout only knows that my string
>> >corresponds to the %m specification.
>> >
>> >What I would need is the possibility of calling the logger with a
>> >collection of strings; then, in the layout, I could reference each
>>string
>> >with a %1m , %2m and %3m
>> >specification - something like
>> >... INSERT INTO TEST_TABLE ( userName, transactionName, applicationName
>>)
>> >VALUES ( "%1m" , "%3m", "%2m" ) " .
>> >
>> >I know there is no such thing in the package right now, and I don't
>>expect
>> >it any time soon, but do you think it would be feasible? And would it
>>be
>> >useful, or am I the
>> >only one with that kind of requirements?
>> >
>> >Serge Arsenault
>> >
>> >
>> >
>> >
>> >--
>> >To unsubscribe, 
>> e-mail:   <ma...@jakarta.apache.org>
>> >For additional commands, e-mail: 
>> <ma...@jakarta.apache.org>
>>
>>
>>--
>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>>
>>
>>
>>
>>
>>--
>>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>   donald h. larmee                               dlarmee@utopiansoft.com
> 
>804.301.UTOP
>                          utopian software concepts, inc.
>                                  www.utopiansoft.com
>+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-user-help@jakarta.apache.org
>

--
Ceki 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-user-help@jakarta.apache.org