Actually when I rename the string as

*string="/path/to/logDir/$.sourceIP/$.sourceIP.$.sourceTag.log" *

then these are printed literally. After applying that change now there is a
path called exactly as the above, not as the values the variables hold.
Only when I treat them as properties do they work as expected.

On Wed, May 13, 2020 at 11:17 AM Rainer Gerhards <[email protected]>
wrote:

> > $.dev1IP = 192.168.1.1;
> > $.dev2IP = 192.168.1.2;
> > $.dev3IP = 192.168.1.3;
> >
> > set $.sourceIP = $fromhost-ip;
> > set $.sourceTag = "";
> >
> > template(name="temp1" type="string"
> string="/path/to/logDir/%.sourceIP%/%.sourceIP%.%.sourceTag%.log")
>
> The problem is that ".sourceTag" is not a property, but a variable.
> You need to specify a variable with a leading dollar sign, as such
> $.sourceTag.
>
> The same is true for .sourceIP, but I guess this is a typo or some
> other unshown part in your config "fixes" the issue.
>
> Rainer
> >
> > ruleset(name="rules1") {
> > if ($.sourceIP == $.dev1IP) then {
> >     set $.sourceTag = "tag1";
> >     do something
> > } else if ($.sourceIP == $.dev2IP) then {
> >     set $.sourceTag = "tag2";
> >     do something
> > } else if ($.sourceIP == $.dev3IP) then {
> >     set $.sourceTag = "tag3";
> >     do something
> > } else {
> >     do something if nothing else matches
> > }
> > action(type="omfile" dynaFile="temp1")
> > }
> >
> > This is a more complete code block to show how I know it's not working.
> I have logs coming in from those IP addresses but the dynamic file
> generated is named "192.168.1.1..log" when instead it should be named
> "192.168.1.1.tag1.log".
> >
> > Running "rsyslogd -N1 -f /etc/rsyslog.conf" results in no errors.
> >
> >
> > On Wed, May 13, 2020 at 10:23 AM Rainer Gerhards <
> [email protected]> wrote:
> >>
> >> > I have multiple devices sending logs to a central logging server and
> these
> >> > all sends logs in a somewhat different way, therefore I have
> different sets
> >> > of filters for each of these devices. The idea I had was to set
> variables
> >> > at the top of the configuration with the IP addresses for these
> devices and
> >> > then have a ruleset that would compare the source IP address of the
> message
> >> > and apply these rules under if statement blocks. Something like this:
> >> >
> >> > $.dev1IP = 192.168.1.1;
> >> > $.dev2IP = 192.168.1.2;
> >> > $.dev3IP = 192.168.1.3;
> >> >
> >> > $.sourceIP = $fromhost-ip;
> >> >
> >> > if ($.sourceIP == $.dev1IP) then {
> >> >     do something
> >> > } else if ($.sourceIP == $.dev2IP) then {
> >> >     do something
> >> > } else if ($.sourceIP == $.dev3IP) then {
> >> >     do something
> >> > } else {
> >> >     do something if nothing else matches
> >> > }
> >> >
> >> > The issue is that the above is currently not working.
> >>
> >> What does "not working" mean precisely? Is there an error message? Is
> >> the result other than expected?
> >>
> >> Rainer
> >>
> >> > Am I using the wrong
> >> > comparator? I tried using "isequal" but that didn't work either. Can
> I even
> >> > do what I'm trying to do? What really confuses me is that I tried
> doing the
> >> > values themselves in the if statement, but that didn't work either.
> >> >
> >> > Thanks,
> >> > ABB
> >> > _______________________________________________
> >> > rsyslog mailing list
> >> > https://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
https://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