You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Michael Gibbs (Jira)" <lo...@logging.apache.org> on 2022/06/01 12:42:00 UTC

[jira] [Created] (LOGCXX-556) Debug exception in runtime library when logging string larger than MaxMessageLength and a SyslogAppender

Michael Gibbs created LOGCXX-556:
------------------------------------

             Summary: Debug exception in runtime library when logging string larger than MaxMessageLength and a SyslogAppender
                 Key: LOGCXX-556
                 URL: https://issues.apache.org/jira/browse/LOGCXX-556
             Project: Log4cxx
          Issue Type: Bug
          Components: Appender
    Affects Versions: 0.12.1
         Environment: Windows MSVC 17.2.2 x86
            Reporter: Michael Gibbs
         Attachments: image-2022-06-01-13-24-05-356.png, image-2022-06-01-13-30-25-208.png, image-2022-06-01-13-31-27-072.png

I upgraded from log4cxx 0.10.0.1 to 0.12.1.0 on Windows and get this debug assertion when logging a string larger than the MaxMessageLength using a SyslogAppender.

In Release mode the string is logged correctly and split up into multiple log messages of length MaxMessageLength.

!image-2022-06-01-13-24-05-356.png!

!image-2022-06-01-13-30-25-208.png!

!image-2022-06-01-13-31-27-072.png!

Version 0.12.1 built in x86 with vcpkg on Windows using Visual Studio 2022 17.2.2. 0.13.0 is not yet available from vcpkg but I can't see any commits that would change this behaviour.

Code to reproduce:
{code:java}
#include "log4cxx/logger.h"
#include "log4cxx/xml/domconfigurator.h"

int main(void)
{
    log4cxx::xml::DOMConfigurator::configure("log4cxx.xml");
    log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("main"));
    LOG4CXX_ERROR(logger, "aaaaaaaa");    
    auto rootlogger = log4cxx::Logger::getRootLogger();
    auto appender = rootlogger->getAppender(LOG4CXX_STR("ASYNC"));   
 
    if (appender != nullptr)
    {
        appender->close();
    }
}{code}
 

log4cxx.xml
{code:java}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
  
    <appender name="SYSLOG" class="org.apache.log4j.SyslogAppender"> 
        <param name="Threshold" value="INFO" /> 
        <param name="SysLogHost" value="localhost" /> 
        <param name="Facility" value="DAEMON" /> 
        <param name="MaxMessageLength" value="10" /> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d %-5p - %m%n" /> 
        </layout>
    </appender> 
    
    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
        <param name="BufferSize" value="500"/>
        <param name="Blocking" value="true"/>
        <param name="LocationInfo" value="true"/>
        <appender-ref ref="SYSLOG"/>
    </appender>  
  
    <root>
        <level value="INFO"/>
        <appender-ref ref="ASYNC" />
    </root>
</log4j:configuration>{code}
The workaround is to increase MaxMessageLength as much as necessary.

 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)