Scope
This document covers the process of creating "custom" logs in Pathfinder Core Pro for logging things that might not currently be an option. This can be useful for debugging specific problems.
At the moment this is fully unsupported and intended to be used by, or under the guidance of support engineers. It involves the use of the command line interface to the SapV2 protocol. Use of this command line interface or the commands described herein signifies your agreement that you assume all risk, and any warranty about the appropriateness or functions are excluded where allowed.
Description
The process of creating these custom log writers starts with creating a new log writer via the main web interface but not specifying any log options. This adds the required components which you will use to form a subscription message in the next steps. You will also need to locate the path and property that you want to subscribe to. We'll cover those steps here.
In this example, we want to log the caller ID and the remote URI of every call that comes into every line on a Telos VX system. This means that in our case, we need to have our Telos VX and any VX Studios already added to Pathfinder. We're not going to cover that here, and we're not going to cover the steps to make a new Log Writer as these are all documented elsewhere.
Let's get started
Login to Pathfinder
Using PuTTy or another terminal program make a connection to your Pathfinder Core Pro on port 9600.
You may or may not receive any confirmation that you are connected. It will depend on what you use for a terminal program.
Send the command Login Admin Admin. You will receive a "login successful" message if you have used the right username and password. You can use any user after the Login command that has admin priviledges.
Login Admin Admin login successful
Get a list of objects
Get a list of objects. (this is the command "get" a single space, then a period)
get .
This returns the following list.
get . indi Clustering#0 indi DeviceEmulators#0 indi Devices#0 indi LegacyPanels#0 indi LogicFlows#0 indi Logs#0 indi MemorySlots#0 indi Meters#0 indi PropertyGroups#0 indi Requests#0 indi Routers#0 indi Scenes#0 indi System#0 indi TimeEvents#0 indi UpdateModerators#0 indi UserPanels#0 indi Users#0
A word about the "period." The period is used to ask for any objects beyond that current level. Using get without the period at the end returns the properties at that particular level.
Using get and adding the period at the end returns any additional objects beyond that level.
In our case, we want to log information about our Telos VX, so we need to find it.
Send the command;
get Devices#0.
Find YOUR device and desired property
Find your device and continue to drill down. You can copy and paste this from the results. Don't forget to add the period.
get Devices#0.VxEngine#[tcp://192.168.2.200:93].
You'll finally reach the end of the Object and your get with the period will say indi NONE. You can see here, we had to drill into several objects;
get Devices#0.VxEngine#[tcp://192.168.2.200:93].LwcpVxInterpreter#1.LwcpVxRoot#0.studio#1.Lines#0.line#1. indi NONE
Now, send that same get command without the period. That shows us all of the properties for Line 1 in Studio 1. For our example, we want to make note of the
caller_id
and theremote
properties. These are the properties we will want to subscribe to.

I gave you the more difficult way for you to find all of the properties so that you get used to navigating with SapV2 commands. There is an easier way from the Pathfinder Core Pro UI. In the Logic Flow, using the API setting, you can see all of these properties.
Add the log entries
We need to know the main Object for our Log Writer
Send the command;
get Logs#0.
That command returns
indi Logs#0.LogFileWriter#[QOR.log] indi Logs#0.LogFileWriter#[Silence.log] indi Logs#0.LogRotator#0 indi Logs#0.UdpSysLogWriter#Audio_Routes indi Logs#0.UdpSysLogWriter#VX_URI_Test
Copy the
Logs#0.UdpSysLogWriter#VX_URI_Test
to a text editor, we'll need it in the next step.
Create the INIT string
In your favorite text editor, build the following string.
This string starts with the init command. Then our parent log object is followed by the LogSubscription command.
init Logs#0.UdpSysLogWriter#VX_URI_Test.LogSubscription
Add our subscription information.
subscription="sub Devices#0.VxEngine#[tcp://192.168.2.200:93].LwcpVxInterpreter#1.LwcpVxRoot#0 remote $MAX_DEPTH=-1"
The $MAX_DEPTH=-1 command is used so that we don't have to list each studio and each line as separate entries. What we're saying here is go to the LwcpVxRoot#0 object and get any "remote" property all the down the tree. This will get "remote" from all studios and all lines. If you only wanted to go one level deep, you can say $MAX_DEPTH=1. We want to drill all the way down.
There are a few more properties
typeId=9999 severity=Informational
typeID is the message ID for a syslog server. The severity instructs the log writer to log this as an Informational message
Finally
The entire string looks like this.
init Logs#0.UdpSysLogWriter#VX_URI_Test.LogSubscription subscription="sub Devices#0.VxEngine#[tcp://192.168.2.200:93].LwcpVxInterpreter#1.LwcpVxRoot#0 remote $MAX_DEPTH=-1" typeId=9999 severity=Informational
In your Terminal Window. Copy and Paste this and press enter.
The second entry.
Remember we wanted to log caller_ID and remote. The only thing we need to do is change the properties in our string. "remote" becomes "caller_id" and the typeId needs to be unique, so we'll change that to 9998
init Logs#0.UdpSysLogWriter#VX_URI_Test.LogSubscription subscription="sub Devices#0.VxEngine#[tcp://192.168.2.200:93].LwcpVxInterpreter#1.LwcpVxRoot#0 caller_id $MAX_DEPTH=-1" typeId=9998 severity=Informational
Once you enter this second command you should be done.
Check your work.
Return to your terminal window and send the command
get Logs#0.UdpSysLogWriter#VX_URI_Test.
You can see here that both messages 9998 and 9999 are listed.

A final word of caution
If you go back to this log in the web UI of Pathfinder, there is nothing to see. These options that you just added manually are not shown. If you SAVE while editing that log, you will overwrite the settings and remove what you just added.
Let us know how we can help
If you have further questions on this topic or have ideas about improving this document please contact us.