You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by "Jarrod Alexander (JIRA)" <ji...@apache.org> on 2013/03/26 16:43:16 UTC

[jira] [Comment Edited] (LOG4NET-370) RemoteSyslogAppender doesn't properly handle newline in log message

    [ https://issues.apache.org/jira/browse/LOG4NET-370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13614135#comment-13614135 ] 

Jarrod Alexander edited comment on LOG4NET-370 at 3/26/13 3:41 PM:
-------------------------------------------------------------------

Dominik,

If the user was logging data generated from within the program (stacktrace for example), the linefeed characters will be equal to Environment.Newline, so there won't be a problem.  If the user logs text from some external source, it could contain other linefeed characters, so I agree it is an issue.  Obviously for me and for log4net, performance should be paramount.  There are various options for achieving the desired result, but what do you think about a fix as simple as:

	string[] lines = message.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

Do you have a better method in mind?  (edit, I posted this before I saw your revised patch)
                
      was (Author: jarroda):
    Dominik,

If the user was logging data generated from within the program (stacktrace for example), the linefeed characters will be equal to Environment.Newline, so there won't be a problem.  If the user logs text from some external source, it could contain other linefeed characters, so I agree it is an issue.  Obviously for me and for log4net, performance should be paramount.  There are various options for achieving the desired result, but what do you think about a fix as simple as:

	string[] lines = message.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

Do you have a better method in mind?
                  
> RemoteSyslogAppender doesn't properly handle newline in log message
> -------------------------------------------------------------------
>
>                 Key: LOG4NET-370
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-370
>             Project: Log4net
>          Issue Type: Bug
>          Components: Appenders
>         Environment: All
>            Reporter: Jarrod Alexander
>            Assignee: Dominik Psenner
>         Attachments: RemoteSyslogAppender.cs.patch, RemoteSyslogAppender.cs.revised.patch
>
>
> RemoteSyslogAppender sends log messages containing newline characters to syslog, however the syslog RFC 3164 states that the message portion of the syslog packet can only contain visible ASCII characters and spaces.  This causes multiline log messages to render on a single line in at least some instances.
> The solution appears to be sending each line of the log message as a separate syslog packet.  I have modified RemoteSyslogAppender to support this behavior and will provide a patch file.
> Here is the relevant portion of the RFC:
> 4.1.3 MSG Part of a syslog Packet
>    The MSG part will fill the remainder of the syslog packet.  This will
>    usually contain some additional information of the process that
>    generated the message, and then the text of the message.  There is no
>    ending delimiter to this part.  The MSG part of the syslog packet
>    MUST contain visible (printing) characters.  The code set
>    traditionally and most often used has also been seven-bit ASCII in an
>    eight-bit field like that used in the PRI and HEADER parts.  In this
>    code set, the only allowable characters are the ABNF VCHAR values
>    (%d33-126) and spaces (SP value %d32).  However, no indication of the
>    code set used within the MSG is required, nor is it expected.  Other
>    code sets MAY be used as long as the characters used in the MSG are
>    exclusively visible characters and spaces similar to those described
>    above.  The selection of a code set used in the MSG part SHOULD be
>    made with thoughts of the intended receiver.  A message containing
>    characters in a code set that cannot be viewed or understood by a
>    recipient will yield no information of value to an operator or
>    administrator looking at it.
> http://www.ietf.org/rfc/rfc3164.txt

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira