More effecient datalogging code
You can combine the Streaming library with a wrapper class that sends data to multiple serial destinations.
Here's a little example:
#include &lt;Streaming.h&gt;

class DualSerial : public Print {
    private:
        Print *_dev1;
        Print *_dev2;

    public:
        DualSerial(Print &amp;s1, Print &amp;s2) : _dev1(&amp;s1), _dev2(&amp;s2) {}

        size_t write(uint8_t c) {
            _dev1-&gt;write(c);
            _dev2-&gt;write(c);
        }      
};

DualSerial remote(Serial, Serial3);

void setup() {
    Serial.begin(115200);
    Serial3.begin(115200);
}

void loop() {
    // Both Serial and Serial3 will receive this
    remote &lt;&lt; &quot;The time is: &quot; &lt;&lt; millis() &lt;&lt; endl;
    delay(1000);
}

The Streaming class will work with anything that inherits from the Print class, which includes the SD card's File class, so you can also use it for writing to the SD card:
logfile &lt;&lt; eOilTempF &lt;&lt; &quot;,&quot; 
        &lt;&lt; checkEngine &lt;&lt; &quot;,&quot; 
        &lt;&lt; engineOilStats.maximum() &lt;&lt; &quot;,&quot;
        &lt;&lt; engineOilStats.average() &lt;&lt; endl;