Complete, ready for merge.

On Thu, Mar 31, 2016 at 12:54 AM, singh.janmejay
<[email protected]> wrote:
> 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



-- 
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