I'm not sure I understand the question but
\def\readtolog#1{% LOGIC NEEDED TO REMOVE TRAILING \par \openin\customfile=#1\relax {\endlinechar-1 \loop\unless\ifeof\customfile \read\customfile to\fileline \typeout{\fileline} \repeat}% \closein\customfile}
would suppress the special handling of two end of line turning into \par
If you want to trap an empty line at the end, just save each line, and output the previous line then just see at the end what you have, which will be an empty macro unless the last line of the file being read does not have an end of line.
\def\readtolog#1{% LOGIC NEEDED TO REMOVE TRAILING \par \openin\customfile=#1\relax {\endlinechar-1 \def\temp{}% \loop\unless\ifeof\customfile \temp \read\customfile to\fileline \def\temp{\typeout{\fileline}}% \repeat \ifx\fileline\@empty\else\temp\fi% just in case there was not an eol on the last line}% \closein\customfile}