[logback-user] Marker
ekkehard
ekkehard at gentz-software.de
Mon Oct 20 14:38:50 CEST 2008
Ceki Gulcu schrieb:
> ekkehard wrote:
>
>> Ceki Gulcu schrieb:
>>
>>> Hello Ekke,
>>>
>>> What is it that you are trying to accomplish, in plain English?
>>>
>>>
>> My Logger objects are in each class
>> but I also want to know the OSGI Bundle name from where the log entry comes
>> and - optional - the OSGI Service names from where the event happened
>>
>
> What is the relation between bundles and services? For example, is it true to
> say that at time t0, bundle b0 offers services s00, s01, s02, bundle b1 offers
> services s10 and s11, while at a later time t1, bundle b0 offers services s00
> and bundle b1 offers services s10, s11 and s12?
>
> If the above is true, you could create a marker named B0, S00, S01, S02, B1, S10
> and S11. For example, with the following code
>
> Marker B0 = MarkerFactory.getMarker("B0");
> Marker B1 = MarkerFactory.getMarker("B1");
> Marker S00 = MarkerFactory.getMarker("S00");
> ...
> Marker S11 = MarkerFactory.getMarker("S11");
>
> Once the markers are created, you can organize them in a graph, for example as
>
> B0.add(S00);
> B0.add(S01);
> B0.add(S02);
> B1.add(S10);
> B1.add(S11);
>
> You can iterate through the references contained in a marker by calling the
> iterator() method. Thus, if you wish to print the name of a bundle and all the
> services it contains, you would print the name of the bundle marker and iterate
> through its service markers (and print their names).
>
> If at time t1 the list of services changes, then you can add or remove
> references to service markers from the bundler markers as appropriate.
>
> If you are using the default marker factory, keep in mind, in the two lines
> below, that x0 and x1 refer to the same marker object named X:
>
> Marker x0 = MarkerFactory.getMarker("X");
> marker x1 = MarkerFactory.getMarker("X");
>
> My point is that, the default marker factory cannot deal with the same bundle
> markers having two different facets simultaneously depending on the context.
> For example, you can't assume that the same bundles offers s0 for one request
> and offers s1 but not s0 for a another request occurring at the same time. This
> may be a totally obvious and acceptable restriction to you. I don't know OSGI
> well enough to tell in advance.
>
> Alternatively, you could implement your own Marker implementation and your own
> marker factory, allowing you to check if a marker is a "bundle marker" or a
> "service marker" or some other type. You could iterate only though bundle
> markers or only through service markers. As long as the markers you pass to
> logback implement the org.slf4j.Marker interface, logback does not care.
>
> HTH,
>
>
Ceki,
thanks - it helps to make it more clear
I want to have this functionality of Bundle- and ServiceMarkers, because
the OSGI LogServices
always have a bundleContext and ServiceReference(s) contained in the
LogEntry.
If I catch these log entries and route them to LOGBack I dont want to
loose them.
Also if I'm doing my own logs from my bundles I also want to log the
bundle name and
names of referenced services
now I have some ideas how to solve it best
thanks again
ekke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://qos.ch/pipermail/logback-user/attachments/20081020/1a915a17/attachment.htm
More information about the Logback-user
mailing list