Class JsonBuffer
java.lang.Object
io.jstach.rainbowgum.json.JsonBuffer
- All Implemented Interfaces:
LogEncoder.Buffer, AutoCloseable
A buffer designed for encoding JSON efficiently.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumExtended fields are just fields that have some special prefix for things like GELF and ECS.static enumJSON tokens.Nested classes/interfaces inherited from interface LogEncoder.Buffer
LogEncoder.Buffer.DirectByteBufferBuffer, LogEncoder.Buffer.StringBuilderBufferModifier and TypeInterfaceDescriptionstatic final classA buffer that formats into a reusedStringBuilder(likeLogEncoder.Buffer.StringBuilderBuffer) but encodes directly into a reusedByteBuffervia aCharsetEncoder, instead of going through an intermediateStringandbyte[]the wayLogOutput.write(LogEvent, String)'s default implementation does.static final classA buffer that simply wraps aStringBuilder. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intA flag to indicate this field is extended which means it will be prefixed withJsonBuffer.ExtendedFieldPrefix. -
Constructor Summary
ConstructorsConstructorDescriptionJsonBuffer(boolean prettyPrint, JsonBuffer.ExtendedFieldPrefix extendedFieldPrefix) Create a JSON buffer. -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()Prepare the buffer for reuse.voidThe appender will call this usually within a lock to transfer content from the buffer to the output.Reusable String buffer for formatted messages.final voidwrite(JsonBuffer.JSONToken token) Writes a JSON token.final intWrites a string field.final intWrites a string field.final voidEnds an array element object previously started withwriteArrayElementObjectStart(int).final intwriteArrayElementObjectStart(int index) Starts an anonymous JSON object as an array element (no field name), e.g. the{in[{...},{...}].final voidEnds a nested JSON array previously started withwriteArrayStart(String, int, int).final intwriteArrayStart(String k, int index, int flag) Starts a nested JSON array as a field value, e.g.final intwriteDouble(String k, double v, int index, int flag) Writes a double field.final intWrites a string field.final voidEfficiently writes a line feed.final intWrites a long field.final voidEnds a nested JSON object previously started withwriteObjectStart(String, int, int).final intwriteObjectStart(String k, int index, int flag) Starts a nested JSON object as a field value, e.g.Methods inherited from class Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface LogEncoder.Buffer
close
-
Field Details
-
EXTENDED_F
A flag to indicate this field is extended which means it will be prefixed withJsonBuffer.ExtendedFieldPrefix.- See Also:
-
-
Constructor Details
-
JsonBuffer
Create a JSON buffer.- Parameters:
prettyPrint- whether or not to pretty print the JSON.extendedFieldPrefix- prefix for extended fields.
-
-
Method Details
-
drain
Description copied from interface:LogEncoder.BufferThe appender will call this usually within a lock to transfer content from the buffer to the output.- Specified by:
drainin interfaceLogEncoder.Buffer- Parameters:
output- output to receive content.event- log event.
-
clear
Description copied from interface:LogEncoder.BufferPrepare the buffer for reuse.An appender may not call clear before being passed to the encoder so the encoder should do its own clearing.
- Specified by:
clearin interfaceLogEncoder.Buffer
-
getFormattedMessageBuilder
Reusable String buffer for formatted messages.- Returns:
- buffer.
-
write
Writes a JSON token.- Parameters:
token- token not null.
-
writeLineFeed
Efficiently writes a line feed. -
write
-
write
Writes a string field.- Parameters:
k- field namev- valueindex- the current index for comma determinationflag- seeEXTENDED_F- Returns:
- index + 1
-
writeDouble
Writes a double field.- Parameters:
k- field namev- valueindex- the current index for comma determinationflag- seeEXTENDED_F- Returns:
- index + 1
-
writeInt
Writes a string field.- Parameters:
k- field namev- valueindex- the current index for comma determinationflag- seeEXTENDED_F- Returns:
- index + 1
-
writeLong
Writes a long field.- Parameters:
k- field namev- valueindex- the current index for comma determinationflag- seeEXTENDED_F- Returns:
- index + 1
-
writeObjectStart
Starts a nested JSON object as a field value, e.g."key":{. Fields written after this and before the matchingwriteObjectEnd()should use the returned index (a fresh comma-counter local to the nested object) rather than the outer index.- Parameters:
k- field nameindex- the current index (of the enclosing object) for comma determinationflag- seeEXTENDED_F- Returns:
- 0, the starting index for fields inside the nested object
-
writeObjectEnd
Ends a nested JSON object previously started withwriteObjectStart(String, int, int). -
writeArrayStart
Starts a nested JSON array as a field value, e.g."key":[. Elements written after this and before the matchingwriteArrayEnd()should usewriteArrayElementObjectStart(int)(with a fresh, local index) rather than the outer index.- Parameters:
k- field nameindex- the current index (of the enclosing object) for comma determinationflag- seeEXTENDED_F- Returns:
- 0, the starting index for elements inside the nested array
-
writeArrayEnd
Ends a nested JSON array previously started withwriteArrayStart(String, int, int). -
writeArrayElementObjectStart
Starts an anonymous JSON object as an array element (no field name), e.g. the{in[{...},{...}].- Parameters:
index- the current index (within the array) for comma determination- Returns:
- 0, the starting index for fields inside the element object
-
writeArrayElementObjectEnd
Ends an array element object previously started withwriteArrayElementObjectStart(int).
-