#java #logging #apache-commons-lang3
#java #ведение журнала #apache-commons-lang3
Вопрос:
Я пытаюсь войти в soap-запрос, если мой ввод представляет собой просто строковый объект, ReflectionToStringBuilder создает журнал с разделением моего объекта на символы по символам. Странно то, что если у меня есть строка внутри объекта, она хорошо регистрируется. Как это исправить?
Код в методе Java, c является единственным объектом для регистрации:
ToStringStyle style = new RecursiveToStringStyle();
style = new MultilineRecursiveToStringStyle();
logClass.append(ReflectionToStringBuilder.toString(c,style.MULTI_LINE_STYLE));
Пример запроса Soap:
<v12:serviceName>
<v12:cod1>05034</v12:cod1>
<v12:obj>
<v13:objName>GOOGLE</v13:objName>
<v13:objCode>123456789</v13:objCode>
</v12:obj>
</v12:serviceName>
Результат журнала:
2019-04-08 15:54:49,237 INFO [null] - serviceName - INPUT:
java.lang.String@ebbb509[
value={0,5,0,3,4}
hash=45955692
]
obj@183ef29d[
objName=GOOGLE
objCode=123456789
]
Ожидаемый результат журнала:
2019-04-08 15:54:49,237 INFO [null] - serviceName - INPUT:
java.lang.String@ebbb509[
value=05034
hash=45955692
]
obj@183ef29d[
objName=GOOGLE
objCode=123456789
]
Комментарии:
1. Ну, во-первых, вы ожидаете строку, содержащую дополнительные 4:
050434
. Я предполагаю, что это опечатка, поскольку хэш-код строки05034
текущей реализацииString
‘shashCode()
действительно45955692
. Во-вторых, это похожеvalue
иhash
является всего лишь двумя свойствамиString
.value
является achar[]
, вот почему он печатается как{0,5,0,3,4}
.2. @MCEmperor Вы правы, это была опечатка. Вы также правы в отношении результата, и я знаю, что hash и char являются двумя свойствами строки. Но я пытаюсь получить журнал без них и только со строкой. Кроме того, objName также является строкой, так почему он не печатает символы и их хэш