[OpenSIPS-Users] Problem using xlog with variables

Jan Blom jan.blom at peopleinteractive.se
Mon Dec 5 10:45:33 CET 2016


Hi Bogdan,

Perhaps variables should be evaluated when passed as arguments to a route? Then it would be possible to replace a function call like this:

xlog("L_INFO", "$rm received on $var(hostname)");


with a call to a sub-route:

route(LOG, "$rm received on $var(hostname)");

route[LOG] {
    # do some common stuff here

    xlog("L_INFO", $param(1));
}


Best regards,
Jan

From: Bogdan-Andrei Iancu [mailto:bogdan at opensips.org]
Sent: den 5 december 2016 09:59
To: Jan Blom <jan.blom at peopleinteractive.se>; OpenSIPS users mailling list <users at lists.opensips.org>
Subject: Re: [OpenSIPS-Users] Problem using xlog with variables

Hi Jan,

Of course you can, but you need to evaluate the variables before passing it to the route (as param)

$var(msg) = rm + "received on " + $var(hostname);
route(logger, $var(msg));

Regards,



Bogdan-Andrei Iancu

OpenSIPS Founder and Developer

http://www.opensips-solutions.com
On 04.12.2016 21:29, Jan Blom wrote:
Hi Bogdan,

Thank you for the clarification. I was suspecting that.

That means I cannot simply drop-in replace calls to xlog with calls to a route and passing the log message as an argument.

What do you think about adding a core function eval() that evaluates a string (possibly recursively)?


Best regards,
Jan

From: Bogdan-Andrei Iancu [mailto:bogdan at opensips.org]
Sent: den 2 december 2016 09:57
To: OpenSIPS users mailling list <users at lists.opensips.org><mailto:users at lists.opensips.org>; Jan Blom <jan.blom at peopleinteractive.se><mailto:jan.blom at peopleinteractive.se>
Subject: Re: [OpenSIPS-Users] Problem using xlog with variables

Hi Jan,

You can print via variables strings containing again references to other variables - there is only one level of variable evaluation.

You should do it:
    $var(msg) = $rm + "received on " + $var(hostname);
    xlog("L_INFO", "$var(msg)");

Regards,



Bogdan-Andrei Iancu

OpenSIPS Founder and Developer

http://www.opensips-solutions.com
On 01.12.2016 23:36, Jan Blom wrote:
Hello all,

I was going to centralized logging functions to a route block that would be called from various place in script, using $param(n) to access the log message. I got stuck on what I guess is variable evaluation. Simplified this is the problem:

The normal (working) way:
xlog("L_INFO", "$rm received on $var(hostname)");
Output: INVITE received on proxy-stage-01

What I was trying:
$var(msg) = "$rm received on $var(hostname)";
xlog("L_INFO", "$var(msg)");
Output: $rm received on $var(hostname)

In the latter case the variables are not evaluated the way I was expecting.

Is there a better way to achieve the output of the first example by using a variable containing the message to xlog?
I am testing this on OpenSIPS 2.1.


Best regards,
Jan Blom





_______________________________________________

Users mailing list

Users at lists.opensips.org<mailto:Users at lists.opensips.org>

http://lists.opensips.org/cgi-bin/mailman/listinfo/users


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20161205/4d6e7adb/attachment-0001.htm>


More information about the Users mailing list