I don't understand though:  appenders should only call encode() if they can 
offer the Layout a ByteBuffer to write into...

Sent from my iPhone

> On 2016/02/24, at 19:36, Mikael Ståldal <[email protected]> wrote:
> 
> But it would be useful to have a way to go from StringBuilder to byte[] (not 
> ByteBuffer) as well, to be able to optimize a layout and still have it 
> working together with all existing appenders.
> 
>> On Wed, Feb 24, 2016 at 11:19 AM, Remko Popma <[email protected]> wrote:
>> StringBuilder implements CharSequence; the copy method takes a CharSequence 
>> as its source of characters. 
>> 
>> 
>>> On Wednesday, 24 February 2016, Remko Popma <[email protected]> wrote:
>>> See TextEncoderHelper's methods,
>>> copy: from StringBuilder to CharBuffer
>>> encodeText: from CharBuffer to ByteBufferDestination
>>> 
>>> We don't want to create the byte[] array object so we write directly into 
>>> the ByteBuffer. 
>>> 
>>>> On Wednesday, 24 February 2016, Mikael Ståldal <[email protected]> 
>>>> wrote:
>>>> I still cannot find a way to convert a StringBuilder to a byte[].
>>>> 
>>>>> On Tue, Feb 23, 2016 at 11:03 PM, Gary Gregory <[email protected]> 
>>>>> wrote:
>>>>> How about /dropping/ Serializer1 altogether? Having both is mighty 
>>>>> complicated.
>>>>> 
>>>>> Gary
>>>>> 
>>>>>> On Tue, Feb 23, 2016 at 8:52 AM, Remko Popma <[email protected]> 
>>>>>> wrote:
>>>>>> I wouldn't mind that (no strong opinion either way) but I won't have 
>>>>>> time to do that work.
>>>>>> 
>>>>>>> On Wed, Feb 24, 2016 at 1:23 AM, Gary Gregory <[email protected]> 
>>>>>>> wrote:
>>>>>>> I see we now have:
>>>>>>> 
>>>>>>> org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer2
>>>>>>> 
>>>>>>> Should we deprecate 
>>>>>>> org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer 
>>>>>>> and reimplement everything in terms of Serializer2, even if objects are 
>>>>>>> allocated?
>>>>>>> 
>>>>>>> Gary
>>>>>>> 
>>>>>>>> On Tue, Feb 23, 2016 at 7:59 AM, Remko Popma <[email protected]> 
>>>>>>>> wrote:
>>>>>>>> Layout now extends Encoder so now it has this method:
>>>>>>>> encode(LogEvent source, ByteBufferDestination destination)
>>>>>>>> PatternLayout implements this method. It delegates the work of 
>>>>>>>> converting the StringBuilder to bytes and writing these bytes into the 
>>>>>>>> ByteBufferDestination to the TextEncoderHelper class. No objects are 
>>>>>>>> created during this conversion.
>>>>>>>> 
>>>>>>>> The final piece is (Rolling)RandomAccessFileAppender, whose manager 
>>>>>>>> implements ByteBufferDestination. This appender calls the #encode() 
>>>>>>>> methos on the layout (other managers still call Layout#toByteArray).
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Wed, Feb 24, 2016 at 12:47 AM, Mikael Ståldal 
>>>>>>>>> <[email protected]> wrote:
>>>>>>>>> I cannot really find it.
>>>>>>>>> 
>>>>>>>>>> On Tue, Feb 23, 2016 at 3:59 PM, Remko Popma <[email protected]> 
>>>>>>>>>> wrote:
>>>>>>>>>> Yes, that was implemented in 
>>>>>>>>>> https://issues.apache.org/jira/browse/LOG4J2-1274. 
>>>>>>>>>> 
>>>>>>>>>> Please also see the description and discussion in the epic 
>>>>>>>>>> https://issues.apache.org/jira/browse/LOG4J2-1270. 
>>>>>>>>>> 
>>>>>>>>>> Sent from my iPhone
>>>>>>>>>> 
>>>>>>>>>>> On 2016/02/23, at 23:56, Mikael Ståldal <[email protected]> 
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Do we have any way to convert a StringBuilder to a byte[], without 
>>>>>>>>>>> any intermediate String?
>>>>>>>>>>> 
>>>>>>>>>>> It seems like org.apache.logging.log4j.core.util.StringEncoder 
>>>>>>>>>>> cannot do it.
>>>>>>>>>>> 
>>>>>>>>>>> -- 
>>>>>>>>>>>  
>>>>>>>>>>> 
>>>>>>>>>>> Mikael Ståldal
>>>>>>>>>>> Senior software developer 
>>>>>>>>>>> 
>>>>>>>>>>> Magine TV
>>>>>>>>>>> [email protected]    
>>>>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com 
>>>>>>>>>>> 
>>>>>>>>>>> Privileged and/or Confidential Information may be contained in this 
>>>>>>>>>>> message. If you are not the addressee indicated in this message
>>>>>>>>>>> (or responsible for delivery of the message to such a person), you 
>>>>>>>>>>> may not copy or deliver this message to anyone. In such case, 
>>>>>>>>>>> you should destroy this message and kindly notify the sender by 
>>>>>>>>>>> reply email.   
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -- 
>>>>>>>>>  
>>>>>>>>> 
>>>>>>>>> Mikael Ståldal
>>>>>>>>> Senior software developer 
>>>>>>>>> 
>>>>>>>>> Magine TV
>>>>>>>>> [email protected]    
>>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com 
>>>>>>>>> 
>>>>>>>>> Privileged and/or Confidential Information may be contained in this 
>>>>>>>>> message. If you are not the addressee indicated in this message
>>>>>>>>> (or responsible for delivery of the message to such a person), you 
>>>>>>>>> may not copy or deliver this message to anyone. In such case, 
>>>>>>>>> you should destroy this message and kindly notify the sender by reply 
>>>>>>>>> email.   
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> E-Mail: [email protected] | [email protected] 
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> JUnit in Action, Second Edition
>>>>>>> Spring Batch in Action
>>>>>>> Blog: http://garygregory.wordpress.com 
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> E-Mail: [email protected] | [email protected] 
>>>>> Java Persistence with Hibernate, Second Edition
>>>>> JUnit in Action, Second Edition
>>>>> Spring Batch in Action
>>>>> Blog: http://garygregory.wordpress.com 
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>>  
>>>> 
>>>> Mikael Ståldal
>>>> Senior software developer 
>>>> 
>>>> Magine TV
>>>> [email protected]    
>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com 
>>>> 
>>>> Privileged and/or Confidential Information may be contained in this 
>>>> message. If you are not the addressee indicated in this message
>>>> (or responsible for delivery of the message to such a person), you may not 
>>>> copy or deliver this message to anyone. In such case, 
>>>> you should destroy this message and kindly notify the sender by reply 
>>>> email.   
> 
> 
> 
> -- 
>  
> 
> Mikael Ståldal
> Senior software developer 
> 
> Magine TV
> [email protected]    
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com             
> 
> Privileged and/or Confidential Information may be contained in this message. 
> If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not 
> copy or deliver this message to anyone. In such case, 
> you should destroy this message and kindly notify the sender by reply email.  
>  

Reply via email to