Jul 28, 2020, 22:23 by [email protected]:

> Thanks for all the info, Cern!
>
> I dug a little deeper and on my Beaglebone that has a prebuilt MachineKit 
> image from July of 2019 does not log rtapi_print_msg(RTAPI_MSG_ERR, ... ) 
> calls to the msgd socket, nor the linuxcnc.error_channel. I also have another 
> Beaglebone with a RIP install built from source back in March of this year. 
> It behaves a little differently, but I haven't investigated too far. I know 
> that some of my rtapi_print_msg calls were getting picked up by 
> linuxcnc.error_channel and given there's work in progress to address logging 
> issues, I'm not all that surprised by the difference in behavior. I'll let 
> things shake out a little more before going further, but I appreciate all the 
> help!
>
I recently shallowly investigated  the logging because I was interested in what 
pats would need to be changed to kick the RTAPI/ULAPI compiler switches down to 
the trashbin of history. The logger is based on Simon Kelley's syslog_async 
code from http://www.thekelleys.org.uk/syslog-async/ . But time moves ever 
forward and today there are nice libraries for quick logging like  
https://github.com/RafaGago/mini-async-log-c , 
https://github.com/HardySimpson/zlog , https://github.com/zma/zlog/ and many 
others. None or very few of these are implemented with real-time systems in 
mind, so there is always work associated.

One of the reasons why I looked at it is because of the speed of logging, 
respective what is done on the producer side (i.e. in real-time thread) and 
what is done on the consumer side. (With rt preempt it is not going to be an 
issue, given the minimal latency, but with EVL Core I have been able to reach 
very nice lattencies where the logging speed and load will be important). But I 
haven't done any real testings yet.

However, all this being said - to be honest - in the set of things which must 
be done and issues needing repair in Machinekit, I consider this pretty low 
priority. (Sorry.) Any patches will be welcomed by me, and I am sure by other 
members of Machinekit community.

Cern.

>
> In case it helps anyone, I was able to connect to the msgd socket and did 
> have to decode the messages in python like so:
> import zmq 
> import time 
> from machinetalk.protobuf.message_pb2 import Container 
> from machinetalk.protobuf.types_pb2 import * 
>
> context = zmq.Context() 
> sub = context.socket(zmq.SUB) 
> sub.setsockopt(zmq.SUBSCRIBE, "") 
> sub.connect("ipc:///tmp/0.log.<MACHINEKIT MKUUID>") 
> rx = Container()
> while True: 
>   msg = sub.recv() 
>   rx.ParseFromString(msg)
>   print("Received message: %s" % (rx,))
>
> On Tue, Jul 28, 2020 at 2:08 PM <> [email protected]> > wrote:
>
>> When I was playing with it some year or two back, I just looked at exported 
>> mDNS/DNS-SD/Bonjour services (there is a ton of programs for it on any 
>> platform), got the address of the socket and then simply used quick'n'dirty 
>> program written by the simple tutorial on >> zeromq.org 
>> <http://zeromq.org>>> . I am not sure if the logs are sent as a plain-text 
>> or encoded in Protocol Buffers messages. I think it is plaint-text, but if 
>> not, you would then need to decode it.
>>  
>>  I was doing it this way because I was using C#. But for Python there is 
>> PyMachinetalk: >> https://github.com/machinekit/pymachinetalk>>  (But I have 
>> no idea if and how it works).
>>  
>>  Cern.
>>  
>>  
>>  Jul 27, 2020, 16:00 by >> [email protected]>> :
>>  
>>  > What's the easiest way to connect directly to the msgd socket?
>>  >
>>  > On Fri, Jul 24, 2020 at 6:54 PM <> >> [email protected]>> > > wrote:
>>  >
>>  >> What about the ZMQ socket on the msgd process, can you see the messages 
>> there? Given that I cannot find the error_channel() definition in 
>> Machinekit-HAL, I am not sure if the support for it is done in rtapi 
>> logging. I have a mounting anxiety that it is one of the things which were 
>> in LinuxCNC but were superseded in Machinekit and now it is a bloody stump. 
>> (In other words, something which on some nice day somebody will have to 
>> solve/repair).
>>  >>  
>>  >>  However, still it is odd that C call to rtapi_print_msg you can see and 
>> python call to RTAPILogger you cannot - when it uses the exact same function 
>> - or at least it looks like it. As I said, I don't know Python well, but can 
>> you stop/step into (debug) when the python calls the rtapi_print_msg?
>>  >>  
>>  >>  BTW, are you watching with right logging level?
>>  >>  
>>  >>  Cern.
>>  >>  
>>  >>  
>>  >>  Jul 25, 2020, 02:27 by >> >> [email protected]>> >> :
>>  >>  
>>  >>  > I’ll have to dig a little deeper. I’m monitoring the error channel in 
>> Python using something like this (this is the only process calling poll on 
>> the error_channel):
>>  >>  >
>>  >>  > import linuxcnc 
>>  >>  > e = linuxcnc.error_channel()
>>  >>  >
>>  >>  > while True:
>>  >>  >  error = e.poll()
>>  >>  >  if error:
>>  >>  >  print error
>>  >>  >  sleep(.1)
>>  >>  >
>>  >>  > I don’t see error messages come through when I use a separate Python 
>> process to log messages using RTAPILogger, but I do when using 
>> rtapi_print_msg in a real time component. I wasn’t aware of the debugging 
>> issues, so I’ll take a closer look. Thanks for the info!
>>  >>  >
>>  >>  >
>>  >>  >> On Jul 24, 2020, at 5:03 PM, >> >> [email protected]>> >>  wrote:
>>  >>  >>
>>  >>  >> Hi,
>>  >>  >>
>>  >>  >> Jul 24, 2020, 23:14 by >> >> [email protected]>> >> :
>>  >>  >>
>>  >>  >>> Unlike rtapi_print_msg, this doesn't seem to append messages to the 
>> linuxcnc.error_channel. Is there anyway to do so in python?
>>  >>  >>>
>>  >>  >> maybe I don't understand the question (and this python stuff is a 
>> little bit outside my comfort zone), however isn't the RTAPILogger 
>> implemented as a Cython wrapper of rtapi_print_msg? (In 
>> src/hal/cython/machinekit/rtapi.pyx.) And as such it should have the same 
>> output.
>>  >>  >>
>>  >>  >> Of course like many things in Machinekit, the logging project was 
>> started, implemented to a functioning state but then unfortunately left 
>> without much support and bugfixing, so there are problems. For example >> >> 
>> https://github.com/machinekit/machinekit-hal/issues/199
>>  >>  >>
>>  >>  >> Cern.
>>  >>  >>
>>  >>  >>>> On Thursday, July 16, 2015 at 12:19:57 AM UTC-6 >> >> 
>> [email protected]>> >>  wrote:
>>  >>  >>>>
>>  >>  >>>>
>>  >>  >>>> Yishin Li writes: 
>>  >>  >>>>
>>  >>  >>>>> Hi Michael, 
>>  >>  >>>>>
>>  >>  >>>>> On Thursday, July 16, 2015 at 12:17:06 AM UTC+8, Michael Haberler 
>> wrote: 
>>  >>  >>>>>
>>  >>  >>>>>>
>>  >>  >>>>>>
>>  >>  >>>>>> HOWEVER it does not log in sequence with the other events in 
>> HAL/RTAPI and 
>>  >>  >>>>>> that can be key for determining causality 
>>  >>  >>>>>>
>>  >>  >>>>>> that is the primary reason for the unified logging architecture 
>> which 
>>  >>  >>>>>> funnels every log message through a message queue regardless of 
>> origin so 
>>  >>  >>>>>> sequencing is retained - RT, user (remember logging being a mess 
>> :-? like a 
>>  >>  >>>>>> bit here, a bit there, and a bit in dmesg and _no_ sequencing? ) 
>>  >>  >>>>>>
>>  >>  >>>>>> if you dont care about sequencing for one reason or the other, 
>> then the 
>>  >>  >>>>>> Python syslog package is fine 
>>  >>  >>>>>>
>>  >>  >>>>> RTAPILogger works! 
>>  >>  >>>>>
>>  >>  >>>>> Here's the RTAPILogger example: 
>>  >>  >>>>> from machinekit import rtapi 
>>  >>  >>>>> rtapi.init_RTAPI() 
>>  >>  >>>>>
>>  >>  >>>> No need to call init_RTAPI for logging -> it does only initialize 
>> RTAPICommand so it 
>>  >>  >>>> can be used from the module e.g. rtapi.loadrt('blbla') 
>>  >>  >>>>
>>  >>  >>>>> log = rtapi.RTAPILogger(level=rtapi.MSG_ERR,tag="marker") 
>>  >>  >>>>> print >> log, "some message" 
>>  >>  >>>>> Here's the /var/log/linuxcnc.log: 
>>  >>  >>>>> Jul 16 10:34:17 interlaken msgd:0: marker:10350:user some message 
>>  >>  >>>>>
>>  >>  >>>>> Awesome! 
>>  >>  >>>>>
>>  >>  >>>>> Thank you very much, 
>>  >>  >>>>>
>>  >>  >>>>> -Yishin
>>  >>  >>>>>
>>  >>  >>>>
>>  >>  >>>> -- 
>>  >>  >>>> Alexander 
>>  >>  >>>>
>>  >>  >>>
>>  >>  >>>
>>  >>  >>>
>>  >>  >>> --
>>  >>  >>> website: > >> >> http://www.machinekit.io>> >> >  blog: > >> >> 
>> http://blog.machinekit.io>> >> >  github: > >> >> 
>> https://github.com/machinekit
>>  >>  >>> --- 
>>  >>  >>> You received this message because you are subscribed to the Google 
>> Groups "Machinekit" group.
>>  >>  >>> To unsubscribe from this group and stop receiving emails from it, 
>> send an email to > >> >> [email protected] 
>> <mailto:machinekit%[email protected]>>>  <mailto:>> 
>> machinekit%[email protected] 
>> <mailto:machinekit%[email protected]>>> >>> > .
>>  >>  >>> To view this discussion on the web visit > >> >> 
>> https://groups.google.com/d/msgid/machinekit/d3244a63-a003-4fa3-9ec0-2c44f1a0543an%40googlegroups.com>>
>>  >>  <>> >> 
>> https://groups.google.com/d/msgid/machinekit/d3244a63-a003-4fa3-9ec0-2c44f1a0543an%40googlegroups.com?utm_medium=email&utm_source=footer>>
>>  >> >> .
>>  >>  >>>
>>  >>  >
>>  >>  > -- 
>>  >>  > website: >> >> http://www.machinekit.io>> >>  blog: >> >> 
>> http://blog.machinekit.io>> >>  github: >> >> https://github.com/machinekit
>>  >>  > --- 
>>  >>  > You received this message because you are subscribed to the Google 
>> Groups "Machinekit" group.
>>  >>  > To unsubscribe from this group and stop receiving emails from it, 
>> send an email to >> >> [email protected] 
>> <mailto:machinekit%[email protected]>>>  <mailto:>> 
>> machinekit%[email protected] 
>> <mailto:machinekit%[email protected]>>> >>> .
>>  >>  > To view this discussion on the web visit >> >> 
>> https://groups.google.com/d/msgid/machinekit/EC8705B1-4EE5-4F9E-896A-48C4446AB8A5%40pocketnc.com>>
>>  >> .
>>  >>  >
>>  >>  
>>  >>
>>  >
>>  >
>>  >
>>  > --
>>  >  website: > >> http://www.machinekit.io>> >  blog: > >> 
>> http://blog.machinekit.io>> >  github: > >> https://github.com/machinekit
>>  >  --- 
>>  >  You received this message because you are subscribed to the Google 
>> Groups "Machinekit" group.
>>  >  To unsubscribe from this group and stop receiving emails from it, send 
>> an email to > >> [email protected] 
>> <mailto:machinekit%[email protected]>>> > .
>>  >  To view this discussion on the web visit > >> 
>> https://groups.google.com/d/msgid/machinekit/CAPEK9qZ4%3DP9QOWLLsqJVg%3DdQx2gBg6MaSG%3DwgOE2-H0b1Zu0cA%40mail.gmail.com>>
>>   <>> 
>> https://groups.google.com/d/msgid/machinekit/CAPEK9qZ4%3DP9QOWLLsqJVg%3DdQx2gBg6MaSG%3DwgOE2-H0b1Zu0cA%40mail.gmail.com?utm_medium=email&utm_source=footer>>
>>  >> .
>>  >
>>  
>>
>
>
>
> --
>  website: > http://www.machinekit.io>  blog: > http://blog.machinekit.io>  
> github: > https://github.com/machinekit
>  --- 
>  You received this message because you are subscribed to the Google Groups 
> "Machinekit" group.
>  To unsubscribe from this group and stop receiving emails from it, send an 
> email to > [email protected]> .
>  To view this discussion on the web visit > 
> https://groups.google.com/d/msgid/machinekit/CAPEK9qaOtMo-7yhU9Noeu0uKFap-Ew5Z-4nMJb0qGO6i7tqZ%2BQ%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/machinekit/CAPEK9qaOtMo-7yhU9Noeu0uKFap-Ew5Z-4nMJb0qGO6i7tqZ%2BQ%40mail.gmail.com?utm_medium=email&utm_source=footer>>
>  .
>

-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/machinekit/MDRpWls--3-2%40tuta.io.

Reply via email to