I did find that creating a custom layout was trivial but I did find a shortcoming. FileAppender.cfc inserts a hardcoded header line describing the content format:
fileWrite(
variables.logFullPath,
"""Severity"",""Appender"",""Date"",""Time"",""Category"",""Message""#chr( 13 )##chr( 10 )#"
);
If only the above could check for the existence of a header property in the layout and use that if exists.