- 1
- 2
- 3
- 4
- 5
- 6
- 7
SOAPMessage msg = ctx.getMessage();
//msg.writeTo(System.out);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
msg.writeTo(baos);
logger.trace(baos);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+69
SOAPMessage msg = ctx.getMessage();
//msg.writeTo(System.out);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
msg.writeTo(baos);
logger.trace(baos);
где у хвалёного log4j метод для передачи его как аргументом java.io.OutputStream???
someone 26.07.2013 10:44 # 0
И я не понимаю вопроса. Что значит "для передачи его как аргументом java.io.OutputStream"? Парсер сломался.
defecate-plusplus 26.07.2013 10:48 # 0
http://docs.oracle.com/javaee/1.4/api/javax/xml/soap/SOAPMessage.html#writeTo(java.io.OutputStream)
хочу, например msg.writeTo(logger.foobar(TRACE));
bormand 26.07.2013 10:59 # 0
Еще пишут, что где-то в дистрибе log4j в папке contrib есть пример того, как это сделать.
Ничего более изкоробочного не нашлось.
P.S. А msg.toString() и запись результата в лог не катят?
defecate-plusplus 26.07.2013 11:03 # 0
конечный результат - в ОП
bormand 26.07.2013 11:08 # 0
defecate-plusplus 26.07.2013 11:19 # 0
anonimb84a2f6fd141 26.07.2013 18:11 # 0
TOOWTDI? Нет, не слышали.
Вот за это в том числе я и не люблю яву.
bormand 26.07.2013 10:52 # 0
Как я понял defecate++ хочет передать его некой функции, которая принимает OutputStream, и вываливает в него некий дамп некой фигни.
UPD: Ну вот он и сам об этом написал. А я как всегда не обновлял комментарии перед тем как постить.
someone 26.07.2013 10:57 # 0
Логгер - не поток. Атомарная единица потока - байт, а логгера - сообщение. При этом сообщение должно быть текстовым (в то время как в поток можно писать произвольные байты), у сообщения есть дата, источник, опциональный stack trace и прочие прелести жизни.
bormand 26.07.2013 11:08 # 0
P.S. Конечно же я понимаю, что аппендер это не лог-файл, и что он может писать во что-то более сложное, например таблицу в базе. Но юзкейс, имхо, вполне жизненный.
В голову приходит еще один вариант - создать аппендера пишущего в поток, и этот самый поток юзать для записи в него дампов. Если аппендер флашит его после каждой месаги - все будет норм. Но что-то я запамятовал, можно ли писать в поток из нескольких тредов.
bormand 26.07.2013 11:16 # 0
Вариант плохой, т.к. если поток не лочить на время дампанья, дамп может рассеяться среди сообщений от других тредов.
defecate-plusplus 26.07.2013 11:09 # 0
при этом объект будет уверен, что всего лишь работает с std::ostream
bormand 26.07.2013 11:12 # 0
defecate-plusplus 26.07.2013 11:36 # 0
тарасу понравится
kostoprav 26.07.2013 11:40 # 0
defecate-plusplus 26.07.2013 11:48 # 0
подробная ссылочка траеблядства для Тараса, покрасивее:
http://stackoverflow.com/questions/2225221/closing-database-connections-in-java/2225275#2225275
kostoprav 26.07.2013 11:49 # 0
defecate-plusplus 26.07.2013 11:58 # 0
bormand 26.07.2013 11:41 # +1
LispGovno 26.07.2013 21:02 # +1
defecate-plusplus 26.07.2013 11:01 # 0
туда сюда её по потокам сувать
а это всё потому, что в жабе нет перегрузки оператора <<
(хотел зелёным, но не буду, ибо всё чистая правда)
anonimb84a2f6fd141 26.07.2013 18:12 # 0
Krutsiatus 26.07.2013 19:22 # +2
anonimb84a2f6fd141 26.07.2013 21:25 # −2
anonimb84a2f6fd141 27.07.2013 21:50 # +2
guest8 04.06.2018 20:12 # −999