arcao / Syslog

An Arduino library for logging to Syslog server in IETF format (RFC 5424) and BSD format (RFC 3164)
MIT License
118 stars 48 forks source link

Using syslog.logf crashed the Arduino #19

Open Cyb0rg42 opened 5 years ago

Cyb0rg42 commented 5 years ago

I'am using the libraty on a Arduino Mega with an Ethernet Shield. When I use the syslog.logf function the Arduino stops working. Any idea what I' am doing wrong?

Sketch:

RemotePowerSwitch.txt

Thanks, Karl

saspol commented 5 years ago

Have same problem with Mega and W5100 shield. First usage syslog.log() crashing system.

brianrho commented 4 years ago

Likely caused because the library doesn't open the Ethernet socket first before writing log strings to it. This should be done with this->_client->begin(someRandomLocalPort) or in your sketch setup(), can also be done with udpClient.begin(someRandomLocalPort).

At first, while trying to port this library, I spent a while searching to see if this was already done automatically somewhere down the stack, but I found nothing. Then I found this issue which confirms the present Ethernet example won't work, probably wasn't a big deal before since most people use ESP8266/32 WiFi, whose UDP library doesn't seem to directly operate on sockets the same way as the W5x00 library, instead dynamically creating a new UDP context as needed for each datagram.