You can always do StringBuilder.toString().getBytes(). Or you can create a byte[] array up front, call ByteBuffer.wrap(byte[]) on it, and use TextEncoderHelper.encode(). When done you can access the wrapped byte[] array.
On Wednesday, 24 February 2016, 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] > <javascript:_e(%7B%7D,'cvml','[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] >> <javascript:_e(%7B%7D,'cvml','[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. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> [image: MagineTV] >>>>>>>>>> >>>>>>>>>> *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. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> [image: MagineTV] >>>>>>>>> >>>>>>>>> *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 >>>>>>> <http://www.manning.com/bauer3/> >>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>>>>> Spring Batch in Action <http://www.manning.com/templier/> >>>>>>> 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 >>>>> <http://www.manning.com/bauer3/> >>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>>> Spring Batch in Action <http://www.manning.com/templier/> >>>>> Blog: http://garygregory.wordpress.com >>>>> Home: http://garygregory.com/ >>>>> Tweet! http://twitter.com/GaryGregory >>>>> >>>> >>>> >>>> >>>> -- >>>> [image: MagineTV] >>>> >>>> *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. >>>> >>> > > > -- > [image: MagineTV] > > *Mikael Ståldal* > Senior software developer > > *Magine TV* > [email protected] > <javascript:_e(%7B%7D,'cvml','[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. >
