[logback-user] Configuring properties via XML
ceki
ceki at qos.ch
Fri Nov 9 08:02:34 CET 2012
Regarding race conditions, note that the MDC manages contextual
information on a per thread basis [1].
[1] http://logback.qos.ch/manual/mdc.html
On 09.11.2012 01:42, Adam Gordon wrote:
> I was able to get this working using the SiftingAppender. Thanks! My
> request filter pulls the child app name from the URI and sets the MDC
> variable which yields the appropriate behavior of Spring logging to the
> correct log files.
>
> One final question: is this going to be subject to race conditions? If
> user A is using child app A at the same time as user B is using child
> app B, they're going to go through the same request filter so it's
> feasible that A's value gets set and that thread goes to do some
> intensive business logic (which let's say has a bunch of logging), B's
> thread comes in and changes the value, will A's thread suddenly switch
> log files?
>
> I guess the real question is when does the SiftingAppender query MDC for
> the value and when does it update it for the nested <appender>?
>
> --adam
>
> http://gordonizer.com
>
>
>
> On Thu, Nov 8, 2012 at 2:27 PM, ceki <ceki at qos.ch <mailto:ceki at qos.ch>>
> wrote:
>
>
> Have you looked at SiftingAppender [1]? If you can set an MDC
> variable at the beginning of a request served by each child app, the
> results should be rather close to what you are aiming. Give it a try.
>
> [1] http://logback.qos.ch/manual/__appenders.html#SiftingAppender
> <http://logback.qos.ch/manual/appenders.html#SiftingAppender>
>
>
> On 08.11.2012 19:54, Adam Gordon wrote:
>
> Ok, I really should have thought about what I really needed
> before posting.
>
> We have a "parent" GWT web application and we have children
> applications
> that are plugged into it. The children can run as standalone web
> applications but this is really only for development. Since
> each child
> can run independently, each has its own logback.xml file.
>
> Unfortunately, when the parent is built, the children are just
> JAR file
> dependencies and the parent also has it's own logback.xml file.
>
> Using only the parent's logback.xml file, we can configure different
> appenders (and thus different log files) for each of the
> children, but
> this only works because of the child namespacing (the Java package
> name). The parent's logback.xml defines the root logger to use the
> parent's appender. What this means is that if the children are
> using a
> common framework, say Spring, all the Spring logging doesn't go
> into the
> correct child's logfile, but rather the parent's.
>
> What we need is a way to either allow each child it's own,
> completely
> separate logging configuration or we need to "tag" the logging
> statement
> in the parent's log file with some name that indicates which
> child the
> message came from.
>
> I was looking at the concept of a context selector, but it
> wasn't clear
> how I'd be able to configure this to return the correct
> LoggingContext
> depending on which child issued the logging statement.
>
> Alternatively, I suppose I could add a filter which "sets" the
> current
> logging context based on the request URI - the children's
> request URIs
> are also namespaced so that each child's request URI always
> starts with
> /child_name/...
>
> Was this clear? Do anyone have any thoughts on how best to approach
> this problem?
>
> Thanks,
>
> --adam
>
> http://gordonizer.com
>
>
>
> On Thu, Nov 8, 2012 at 11:01 AM, ceki <ceki at qos.ch
> <mailto:ceki at qos.ch> <mailto:ceki at qos.ch <mailto:ceki at qos.ch>>>
>
> wrote:
>
>
> Please see [1] in the docs. For your use case, you need to
> define
> the property in the context scope [2].
>
> [1]
> http://logback.qos.ch/manual/____configuration.html#____variableSubstitution
> <http://logback.qos.ch/manual/__configuration.html#__variableSubstitution>
>
> <http://logback.qos.ch/manual/__configuration.html#__variableSubstitution
> <http://logback.qos.ch/manual/configuration.html#variableSubstitution>>
> [2]
> http://logback.qos.ch/manual/____configuration.html#scopes
> <http://logback.qos.ch/manual/__configuration.html#scopes>
>
> <http://logback.qos.ch/manual/__configuration.html#scopes
> <http://logback.qos.ch/manual/configuration.html#scopes>>
>
>
> On 08.11.2012 18:54, Adam Gordon wrote:
>
> The Layout chapter indicates it supports property value
> retrieval via
> %property{key} and states that the logging context is
> where one
> might
> put a property (along w/ System properties). I believe
> log4j
> did this
> w/ the <param name="key_name" value="some_value">
> element in the
> <appender> and referenced it via %properties{key_name}.
>
> I'm not seeing how to do this in Logback in XML. Would
> it go in the
> <logger> element? What's the syntax? Could someone please
> point me to
> the relevant section in the appropriate chapter of the
> manual?
>
> Thanks,
>
> --adam
>
>
>
> --
> Ceki
> 65% of statistics are made up on the spot
--
Ceki
65% of statistics are made up on the spot
More information about the Logback-user
mailing list