PR created (not complete yet, not ready for merge):
https://github.com/rsyslog/rsyslog/pull/931

Have a quick look to get a feel for namespaced reporting of dyn-stats counters.

On Fri, Mar 25, 2016 at 4:25 PM, singh.janmejay
<[email protected]> wrote:
> Cool. Will fix both stats representation and foreach in one PR.
> On Mar 25, 2016 3:10 PM, "Rainer Gerhards" <[email protected]> wrote:
>
>> ACK! Please go, let's set aside my probably too strong concerns. I am
>> perfectly happy when you say it's a small change and glad you do it!
>>
>> Rainer
>>
>> Sent from phone, thus brief.
>> Am 25.03.2016 06:21 schrieb "David Lang" <[email protected]>:
>>
>> > As I understand Rainer, go .
>> >
>> > David Lang
>> >
>> > On Fri, 25 Mar 2016, singh.janmejay wrote:
>> >
>> > Makes sense. So final call on foreach? Go or no-go?
>> >> On Mar 25, 2016 2:38 AM, "David Lang" <[email protected]> wrote:
>> >>
>> >> Just a note, the dynastats output line needs this as well as the bucket
>> >>> line.
>> >>>
>> >>> This isn't remote-input, but it needs the same ability to iterate over
>> >>> things.
>> >>>
>> >>> example:
>> >>>
>> >>>
>> >>>
>> >>>
>> {"name":"global","origin":"dynstats","message_framing.ops_overflow":0,"message_framing.new_metric_add":5,"message_framing.no_metric":0,"message_framing.metrics_purged":0,"message_framing.ops_ignored":0,"message_framing.purge_triggered":0,"msgs_per_host.ops_overflow":0,"msgs_per_host.new_metric_add":0,"msgs_per_host.no_metric":0,"msgs_per_host.metrics_purged":0,"msgs_per_host.ops_ignored":0,"msgs_per_host.purge_triggered":0,"msgs_per_edge_relay.ops_overflow":0,"msgs_per_edge_relay.new_metric_add":0,"msgs_per_edge_relay.no_metric":0,"msgs_per_edge_relay.metrics_purged":0,"msgs_per_edge_relay.ops_ignored":0,"msgs_per_edge_relay.purge_triggered":0,"msgs_per_core_relay.ops_overflow":0,"msgs_per_core_relay.new_metric_add":0,"msgs_per_core_relay.no_metric":0,"msgs_per_core_relay.metrics_purged":0,"msgs_per_core_relay.ops_ignored":0,"msgs_per_core_relay.purge_triggered":0,"msgs_per_program.ops_overflow":0,"msgs_per_program.new_metric_add":0,"msgs_per_program.no_metric":0,"msgs_pe
>>  !
>> >>>
>> >> r_
>> >
>> >> p!
>> >>
>> >>>
>> >>>
>> >>>
>> rogram.metrics_purged":0,"msgs_per_program.ops_ignored":0,"msgs_per_program.purge_triggered":0,"msgs_per_tag.ops_overflow":0,"msgs_per_tag.new_metric_add":0,"msgs_per_tag.no_metric":0,"msgs_per_tag.metrics_purged":0,"msgs_per_tag.ops_ignored":0,"msgs_per_tag.purge_triggered":0}
>> >>>
>> >>> David Lang
>> >>>
>> >>> On Wed, 23 Mar 2016, singh.janmejay wrote:
>> >>>
>> >>> Date: Wed, 23 Mar 2016 09:10:47 +0530
>> >>>
>> >>>> From: singh.janmejay <[email protected]>
>> >>>> Reply-To: rsyslog-users <[email protected]>
>> >>>> To: rsyslog-users <[email protected]>
>> >>>> Subject: Re: [rsyslog] dynastats JSON output need work
>> >>>>
>> >>>> Agree, if most of us like it, I can implement foreach for objects. As
>> of
>> >>>> now I use omprog to call a script which uses jq and awk to make it
>> >>>> opentsdb
>> >>>> and redis friendly. I could have used omredis if foreach worked for
>> >>>> objects.
>> >>>>
>> >>>> Let us conclude.
>> >>>>
>> >>>> @Rainer any thoughts on foreach for object?
>> >>>> On Mar 23, 2016 1:56 AM, "David Lang" <[email protected]> wrote:
>> >>>>
>> >>>> On Wed, 23 Mar 2016, singh.janmejay wrote:
>> >>>>
>> >>>>>
>> >>>>> Makes sense.
>> >>>>>
>> >>>>>
>> >>>>>> ..."counters":["a":80,"b":67] won't work, I think you meant
>> >>>>>> ..."counters": [{"a" : 80}, {"b": 67}].
>> >>>>>>
>> >>>>>>
>> >>>>>> ahh, showing my lack of knowledge of JSON :-) talking things
>> through:
>> >>>>>
>> >>>>> so our choices are:
>> >>>>>
>> >>>>> "counters": [{"a":80},{"b":67}]
>> >>>>> vs
>> >>>>> "counters": {"a":80,"b":67}
>> >>>>>
>> >>>>> running these through jq gives
>> >>>>>
>> >>>>> {
>> >>>>>   "counters": [
>> >>>>>     {
>> >>>>>       "a": 80
>> >>>>>     },
>> >>>>>     {
>> >>>>>       "b": 67
>> >>>>>     }
>> >>>>>   ]
>> >>>>> }
>> >>>>>
>> >>>>> vs
>> >>>>>
>> >>>>> {
>> >>>>>   "counters": {
>> >>>>>     "a": 80,
>> >>>>>     "b": 67
>> >>>>>   }
>> >>>>> }
>> >>>>>
>> >>>>> or to reference a
>> >>>>> .counters[0].a
>> >>>>> vs
>> >>>>> .counters.a
>> >>>>>
>> >>>>> The latter seems to clearly be the cleaner and more logical one to
>> me.
>> >>>>>
>> >>>>> Does this seem sane?
>> >>>>>
>> >>>>> But to use it, we need a variation of foreach that gives the object
>> >>>>> name
>> >>>>> as well as the object contents.
>> >>>>>
>> >>>>> David Lang
>> >>>>>
>> >>>>> So it boils down to foreach handling object or not.
>> >>>>>
>> >>>>>
>> >>>>>> Thoughts?
>> >>>>>>
>> >>>>>> On Wed, Mar 23, 2016 at 1:18 AM, David Lang <[email protected]> wrote:
>> >>>>>>
>> >>>>>> On Wed, 23 Mar 2016, singh.janmejay wrote:
>> >>>>>>
>> >>>>>>>
>> >>>>>>> What about wrapDynamicObjects="on|off"? That is required
>> regardless,
>> >>>>>>>
>> >>>>>>> right? (if we want to preserve backward compatibility). Unless we
>> >>>>>>>> choose to change it anyway (which im fine with).
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>> I think the fact that data from the log could overwrite name or
>> >>>>>>> origin
>> >>>>>>> is a
>> >>>>>>> fatal flaw and the existing format should not be allowed. So I
>> think
>> >>>>>>> we
>> >>>>>>> should break backwards compatibility here (if it was more
>> >>>>>>> established,
>> >>>>>>> I'd
>> >>>>>>> be much more reluctant to do so, but at this point, I think it's
>> only
>> >>>>>>> early
>> >>>>>>> adopters who are using it)
>> >>>>>>>
>> >>>>>>> So if we are always going to push things down one level, the only
>> >>>>>>> question
>> >>>>>>> is the format
>> >>>>>>>
>> >>>>>>> {"name":"h","origin":"dynstats.bucket"},"counters":{"a":80,"b":67}}
>> >>>>>>>
>> >>>>>>> vs
>> >>>>>>>
>> >>>>>>> {"name":"h","origin":"dynstats.bucket"},"counters":["a":80,"b":67]}
>> >>>>>>>
>> >>>>>>> or the horrible
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> {"name":"h","origin":"dynstats.bucket"},"counters":[{"name":"a","value":80},{"name":"b","value":67}]}
>> >>>>>>>
>> >>>>>>> I really want to avoid this third one. I'd say it's probably better
>> >>>>>>> to
>> >>>>>>> have
>> >>>>>>> to use an external script to process things than make the third
>> one a
>> >>>>>>> standard :-)
>> >>>>>>>
>> >>>>>>> David Lang
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> @Rainer: what do you think about foreach handling object?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>> On Wed, Mar 23, 2016 at 1:01 AM, David Lang <[email protected]>
>> wrote:
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> On Wed, 23 Mar 2016, singh.janmejay wrote:
>> >>>>>>>>>
>> >>>>>>>>> Foreach can only work with arrays as of now. It can't work with
>> >>>>>>>>>
>> >>>>>>>>> objects (key-value pairs). So [{name: ... value: ...}, {..},...]
>> is
>> >>>>>>>>>> the only format that will work as of now.
>> >>>>>>>>>>
>> >>>>>>>>>> We can enhance foreach to work with objects.
>> >>>>>>>>>>
>> >>>>>>>>>> I can make a flag available at dyn-stats bucket level, which can
>> >>>>>>>>>> control serialization format, but that would really be a hack.
>> >>>>>>>>>>
>> >>>>>>>>>> From single-responsibility pattern pov, impstats should be the
>> >>>>>>>>>> only
>> >>>>>>>>>> component that decides how to layout data for user to see.
>> >>>>>>>>>>
>> >>>>>>>>>> How about this:
>> >>>>>>>>>>
>> >>>>>>>>>> impstats(format="json" wrapDynamicObjects="on"...)?
>> >>>>>>>>>>
>> >>>>>>>>>> It defaults to off, which keeps backward compatibility.
>> >>>>>>>>>>
>> >>>>>>>>>> So what do you guys think about:
>> >>>>>>>>>> - wrapDynamicObjects="on|off"
>> >>>>>>>>>> - generating [{name: a, value: 10}, {...} ...] vs. {a: 10, ...}
>> >>>>>>>>>> (foreach will handle the former out of the box, but later is
>> >>>>>>>>>> concise,
>> >>>>>>>>>> readable and light-weight in addition to being more json-y.
>> >>>>>>>>>> - enhancing foreach to work with {a: 10, b: 20...}
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> If we can enhance foreach to work with the concise format, I
>> would
>> >>>>>>>>> rather
>> >>>>>>>>> wait for it instead of introducing the wrapping version.
>> >>>>>>>>>
>> >>>>>>>>> I'm thinking that foreach walks through arrays, rather than
>> mixing
>> >>>>>>>>> concepts,
>> >>>>>>>>> a foreachobject that gives us a name and contents for a {} list
>> of
>> >>>>>>>>> objects
>> >>>>>>>>> may be the right thing to do?
>> >>>>>>>>>
>> >>>>>>>>> foreach just returns a single object while foreachobject needs to
>> >>>>>>>>> return
>> >>>>>>>>> the
>> >>>>>>>>> object and name.
>> >>>>>>>>>
>> >>>>>>>>> although, if we ever get the ability to address arrays directly,
>> >>>>>>>>> being
>> >>>>>>>>> able
>> >>>>>>>>> to look at the array position would be the equivalent of the
>> name.
>> >>>>>>>>>
>> >>>>>>>>> David Lang
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> On Wed, Mar 23, 2016 at 12:26 AM, David Lang <[email protected]>
>> >>>>>>>>> wrote:
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>> On Tue, 22 Mar 2016, singh.janmejay wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>> How about this: we support a new flag in impstats which allows
>> >>>>>>>>>>>
>> >>>>>>>>>>> json-formatted stats-line to optionally use
>> >>>>>>>>>>>> encapsulated/wrapped-layout?
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> impstats(format="json" ...) generates
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> {"name":"msg_per_host","origin":"dynstats.bucket","z-scribe1r-b":80,"SWEB10":67}
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> however,
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> impstats(format="json/w" ...) generates {"header":
>> >>>>>>>>>>>> {"name":"msg_per_host","origin":"dynstats.bucket"},
>> "counters" :
>> >>>>>>>>>>>> {"z-scribe1r-b":80,"SWEB10":67}}
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> This is relevant, the serilization format we use right now
>> mixes
>> >>>>>>>>>>>> pre-defined keys with counter-names and it can affect regular
>> >>>>>>>>>>>> static
>> >>>>>>>>>>>> counters too.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> with the existing pstats output, there is no ability for
>> >>>>>>>>>>> user-defined
>> >>>>>>>>>>> data
>> >>>>>>>>>>> to become a tag name, so there is no potential for ambiguity.
>> but
>> >>>>>>>>>>> with
>> >>>>>>>>>>> dynastats, this is not a possibility, and the format we use
>> >>>>>>>>>>> should
>> >>>>>>>>>>> prevent
>> >>>>>>>>>>> problems.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Also, just from a conceptual point of view, why should the
>> bucket
>> >>>>>>>>>>> contents
>> >>>>>>>>>>> be at the same level as the bucket name?
>> >>>>>>>>>>>
>> >>>>>>>>>>> other than backwards compatibility, what advantage is there of
>> >>>>>>>>>>> the
>> >>>>>>>>>>> current
>> >>>>>>>>>>> version in JSON? the documentation uses the plain text
>> >>>>>>>>>>> equivalant,
>> >>>>>>>>>>> which
>> >>>>>>>>>>> is
>> >>>>>>>>>>> perfectly legitimate because there is an order to the line, and
>> >>>>>>>>>>> after
>> >>>>>>>>>>> you
>> >>>>>>>>>>> get past the name and origin, everything else on the line is
>> >>>>>>>>>>> name-value
>> >>>>>>>>>>> pairs of counters, again, no ambiguity.
>> >>>>>>>>>>>
>> >>>>>>>>>>> But with JSON, I don't believe that you can depend on tools
>> >>>>>>>>>>> maintaining
>> >>>>>>>>>>> (or
>> >>>>>>>>>>> even identifying) the order of the elements, and if you have
>> >>>>>>>>>>> multiple
>> >>>>>>>>>>> elements with the same name, it's implementation dependent as
>> to
>> >>>>>>>>>>> which
>> >>>>>>>>>>> one
>> >>>>>>>>>>> will be seen.
>> >>>>>>>>>>>
>> >>>>>>>>>>> So purely from a correctness and defensive programming point of
>> >>>>>>>>>>> view, I
>> >>>>>>>>>>> think the current JSON serialization should be changed, with
>> the
>> >>>>>>>>>>> old
>> >>>>>>>>>>> format
>> >>>>>>>>>>> no longer being an option.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> As to the details of the new format
>> >>>>>>>>>>>
>> >>>>>>>>>>> What I'm wanting to do with the counters is something like
>> >>>>>>>>>>>
>> >>>>>>>>>>> if $!origin == "dynstats.bucket" then {
>> >>>>>>>>>>>   foreach $.tag $!counters {
>> >>>>>>>>>>>     /var/log/stats;format
>> >>>>>>>>>>>   }
>> >>>>>>>>>>> }
>> >>>>>>>>>>>
>> >>>>>>>>>>> to output one line per counter.
>> >>>>>>>>>>>
>> >>>>>>>>>>> I'm very flexible in how to do this, but I would much rather be
>> >>>>>>>>>>> able
>> >>>>>>>>>>> to
>> >>>>>>>>>>> do
>> >>>>>>>>>>> this inside rsyslog than have to serialize things to an
>> external
>> >>>>>>>>>>> script,
>> >>>>>>>>>>> have it parse the json and process it.
>> >>>>>>>>>>>
>> >>>>>>>>>>> my initial thinking was just do
>> >>>>>>>>>>>
>> >>>>>>>>>>> counters: [ "z-scribe1r-b":80,"SWEB10":67 ]
>> >>>>>>>>>>>
>> >>>>>>>>>>> but as I'm typing this, I realize that doesn't work as I don't
>> >>>>>>>>>>> have a
>> >>>>>>>>>>> way
>> >>>>>>>>>>> to
>> >>>>>>>>>>> break $.tag down to reference the name and the value.
>> >>>>>>>>>>>
>> >>>>>>>>>>> I'd hate to have to do something like
>> >>>>>>>>>>>
>> >>>>>>>>>>> counters: [{"name":"z-scribe1r-b","value":80
>> >>>>>>>>>>> },{"name":"SWEB10","value":67}]
>> >>>>>>>>>>>
>> >>>>>>>>>>> this mirrors the misuse of XML that gives it such a horrible
>> >>>>>>>>>>> reputation.
>> >>>>>>>>>>> But
>> >>>>>>>>>>> unless we introduce some new function to rsyslog to break
>> things
>> >>>>>>>>>>> down,
>> >>>>>>>>>>> I
>> >>>>>>>>>>> don't see a better way. If we do need to do something like
>> this,
>> >>>>>>>>>>> I
>> >>>>>>>>>>> sure
>> >>>>>>>>>>> would not want to make it the default JSON, which would result
>> in
>> >>>>>>>>>>> two
>> >>>>>>>>>>> different formats. I hate the idea of starting to have
>> different
>> >>>>>>>>>>> formats
>> >>>>>>>>>>> because of subtypes of data (what is someone wants the cee
>> >>>>>>>>>>> version
>> >>>>>>>>>>> of
>> >>>>>>>>>>> this
>> >>>>>>>>>>> for example, you start to have orthoginal format decisions)
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> David Lang
>> >>>>>>>>>>> _______________________________________________
>> >>>>>>>>>>> rsyslog mailing list
>> >>>>>>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>>>>>>>>>> http://www.rsyslog.com/professional-services/
>> >>>>>>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>>>>>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED
>> by a
>> >>>>>>>>>>> myriad
>> >>>>>>>>>>> of
>> >>>>>>>>>>> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>> >>>>>>>>>>> you
>> >>>>>>>>>>> DON'T
>> >>>>>>>>>>> LIKE THAT.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> _______________________________________________
>> >>>>>>>>>>
>> >>>>>>>>>> rsyslog mailing list
>> >>>>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>>>>>>>> http://www.rsyslog.com/professional-services/
>> >>>>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>>>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>> >>>>>>>>> myriad
>> >>>>>>>>> of
>> >>>>>>>>> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>> you
>> >>>>>>>>> DON'T
>> >>>>>>>>> LIKE THAT.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> _______________________________________________
>> >>>>>>>>
>> >>>>>>>> rsyslog mailing list
>> >>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>>>>>> http://www.rsyslog.com/professional-services/
>> >>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>> >>>>>>> myriad
>> >>>>>>> of
>> >>>>>>> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> >>>>>>> DON'T
>> >>>>>>> LIKE THAT.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> _______________________________________________
>> >>>>>>
>> >>>>>> rsyslog mailing list
>> >>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>>>> http://www.rsyslog.com/professional-services/
>> >>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>> >>>>> myriad
>> >>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>> you
>> >>>>> DON'T LIKE THAT.
>> >>>>>
>> >>>>> _______________________________________________
>> >>>>>
>> >>>> rsyslog mailing list
>> >>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>>> http://www.rsyslog.com/professional-services/
>> >>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>> myriad
>> >>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> >>>> DON'T LIKE THAT.
>> >>>>
>> >>>>
>> >>> _______________________________________________
>> >>> rsyslog mailing list
>> >>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >>> http://www.rsyslog.com/professional-services/
>> >>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>> myriad
>> >>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> >>> DON'T LIKE THAT.
>> >>>
>> >>> _______________________________________________
>> >> rsyslog mailing list
>> >> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> >> http://www.rsyslog.com/professional-services/
>> >> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> >> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> >> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> >> DON'T LIKE THAT.
>> >>
>> >> _______________________________________________
>> > rsyslog mailing list
>> > http://lists.adiscon.net/mailman/listinfo/rsyslog
>> > http://www.rsyslog.com/professional-services/
>> > What's up with rsyslog? Follow https://twitter.com/rgerhards
>> > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> > DON'T LIKE THAT.
>> >
>> _______________________________________________
>> rsyslog mailing list
>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> http://www.rsyslog.com/professional-services/
>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> DON'T LIKE THAT.
>>
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T 
> LIKE THAT.



-- 
Regards,
Janmejay
http://codehunk.wordpress.com
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to