[jboss-jira] [JBoss JIRA] (LOGMGR-104) SyslogHandler doesn't handle multi-byte characters correctly

James Perkins (JIRA) issues at jboss.org
Tue May 13 12:22:56 EDT 2014


    [ https://issues.jboss.org/browse/LOGMGR-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12967571#comment-12967571 ] 

James Perkins commented on LOGMGR-104:
--------------------------------------

It's not a problem at all. I definitely appreciate the PR, detailed tests and bug report. It's very helpful.

I haven't decided what to do with the surrogate pairs. For UTF-8 there shouldn't be any and we don't support overriding the encoding. I do however think we might want to. While the RFC indicates the it should be UTF-8, I can definitely see cases where that may not work and something like UTF-16 would be desirable.

> SyslogHandler doesn't handle multi-byte characters correctly
> ------------------------------------------------------------
>
>                 Key: LOGMGR-104
>                 URL: https://issues.jboss.org/browse/LOGMGR-104
>             Project: JBoss Log Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: core
>    Affects Versions: 1.5.2.Final
>         Environment: - WildFly 8.0.0.Final
> - Oracle JDK7u51
> - OS X 10.9.2
>            Reporter: Kyle Shanahan
>            Assignee: James Perkins
>         Attachments: corrupted.png, corrupted2.png, corrupted3.png
>
>
> SyslogHandler doesn't handle multi-byte characters correctly.
> I tried to log multi-byte message with both of org.jboss.logmanager.handlers.SyslogHandler and org.apache.log4j.net.SyslogAppender for same message, only SyslogHandler output were corrupted.
> Step to reproduce (It might need to define -Dfile.encoding=UTF-8 in _JAVA_OPTIONS): 
> 1. define a facility local1 at localhost and make syslog accept UDP packets.
> 2. define a logger:
> {noformat}
> /subsystem=logging/logger=utf8mb4log:add(level=INFO)
> {noformat}
> 3. define a SyslogHandler:
> {noformat}
> /subsystem=logging/custom-handler=TEST_SH:add(class="org.jboss.logmanager.handlers.SyslogHandler", module="org.jboss.logmanager", formatter="SyslogHandler: %s%e", level=INFO, properties={serverHostname="localhost:514", facility="LOCAL_USE_1", truncate=false, maxLength=1024, syslogType="RFC3164" })
> /subsystem=logging/logger=utf8mb4log:assign-handler(name=TEST_SH)
> {noformat}
> 4. define a SyslogAppender:
> {noformat}
> /subsystem=logging/custom-handler=TEST_LOG4J:add(class="org.apache.log4j.net.SyslogAppender", module="org.apache.log4j", formatter="log4j: %s%e", level=INFO, properties={syslogHost="localhost:514", facility="local1"})
> /subsystem=logging/logger=utf8mb4log:assign-handler(name=TEST_LOG4J)
> {noformat}
> 5. get and deploy example project at https://github.com/lbtc-xxx/utf8mb4log
> 6. Access the servlet http://localhost:8080/utf8mb4log/
> And you will get like this: (I can't put 4 byte UTF-8 characters here... because  database error occured):
> {noformat}
> Mar  8 17:29:09 UNKNOWN_HOSTNAME java[9896]: SyslogHandler: ????????????
> {noformat}
> I would send a pull request later.



--
This message was sent by Atlassian JIRA
(v6.2.3#6260)


More information about the jboss-jira mailing list