Jon Mabe created LOG4NET-448: -------------------------------- Summary: Remote syslog messages coming in as separate messages via RemoteSyslogAppender Key: LOG4NET-448 URL: https://issues.apache.org/jira/browse/LOG4NET-448 Project: Log4net Issue Type: Bug Reporter: Jon Mabe
We use sumologic.com to manage our system and application logs. In our .net apps we're using log4net and RemoteSyslogAppender to send logs to sumologic syslog collectors. After upgrading log4net to include the change from LOG4NET-370 our remote syslog messages began to come through to sumologic as a new message for each line. Screenshot of behavior, logs at top are log4net 1.2.11, logs at bottom are 1.2.13 http://cl.ly/image/2z380b0J0N2B?_ga=1.215263703.1124333839.1419368556 Upon reporting this to sumologic this was the response: {quote} That said, I do not think this is what is occurring in your case. What I notice from your screenshot is that there are syslog priorities tagged to each log line ie. <11> so it looks like Log4Net is actually sending these as separate messages. This would be inline with the following text within the Jira you noted for the Log4net. "The solution appears to be sending each line of the log message as a separate syslog packet." If Log4Net is actually sending each line at its own packet (due to the newlines) then the Collector is seeing each of these as its own message and will not know how to group them back together. {quote} Obviously, this is problematic for how we're logging with remotesyslog and sumologic. We discussed where the issue here might lay. And it appears there is some opportunity for changes in log4net's RemoteSyslogAppender: {quote} "Log4Net does not appear to be doing anything incorrect based on Syslog RFC 3164, which is the current Syslog RFC log4Net is following. Section 4.1.3 of this RFC stipulates that messages should not contain anything but visible characters and spaces. (ABNF vchar) Their solution to this was to send a new message at each line break. The other option may have been to strip the newlines from the messages, however I believe they probably wanted to maintain the breaks in some way in order to make the messages more "readable." Now all that said there is a more recent RFC for Syslog (RFC 5424) which obsoletes 3164 and as I understand it is a bit more lenient with regard to the allowable characters. Section 6.4 of this RFC states: "The syslog application SHOULD avoid octet values below 32 (the traditional US-ASCII control character range except DEL). These values are legal, but a syslog application MAY modify these characters upon reception. For example, it might change them into an escape sequence (e.g., value 0 may be changed to "\0"). A syslog application SHOULD NOT modify any other octet values." So the answer here is really "it depends." They are doing it right per the RFC they are following, however they should probably be following the latest standard. {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)