Das `\caption` wird in _jedem_ Kopfbereich der Tabelle gesetzt und für jedes `\caption` gibt es einen Eintrag im Tabellenverzeichnis. Damit das nicht passiert, kann man sich einen ersten Tabellenkopf im Gegensatz zu den weiteren Köpfen definieren. Einfach zusätzlich wie den normalen Kopf eintragen, aber mit `\endfirsthead`. `\endfirsthead` beenden. (Es gibt übrigens auch `\endlastfoot`:
`\endlastfoot` für das Ende der gesamten Tabelle im Gegensatz zu dem Ende bei einem Seitenumbruch):
    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{ngerman,longtable, booktabs}
    
    \newcommand*\cs[1]{\texttt{\textbackslash#1}}
    \newcommand*\marg[1]{\texttt{\{#1\}}}
    
    \begin{document}
    
    \vspace*{10cm}
    
    \begin{longtable}{lrcp{2cm}}
       \caption{log}\label{tab:log2} \\
      \toprule
        Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4 \\             
      \midrule
     \endfirsthead
       \multicolumn{4}{c}{Fortsetzung von Tabelle~\ref{tab:log2}} \\
      \toprule
        Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4 \\             
      \midrule
     \endhead
      \midrule
     \endfoot 
      \bottomrule
     \endlastfoot 
      Linksbündige Spalte. & Rechtsbündige Spalte & Zentrierte Spalte & Parbox \\
      Kurzer Text. & Kurzer Text. & Kurzer Text.& Kurzer Text.\\
      Text. & Text. & Text. & In diesem Felde nun ein elendslanger text, um
                              Umbrüche innerhalb eines Feldes zu erzeugen. \\
      Text. & Text. & Text. & der Befehl \cs{vspace*}\marg{} weiter oben im
                              Quellcode hat einen Umbruch vor dieser Zeile
                              bewirkt. \\
    \end{longtable}
    
    \clearpage
    
    \listoftables
    
    \end{document}