Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Проставка аргумента в строку  [new]
Zzz79
Member

Откуда:
Сообщений: 168
Ребят подскажите плиз такой вопрос

у меня есть строка
private final static String s="some shit will be happen with {}";


так вот если я пользуюсь логером я делаю просто

log.error(s,"Petro")

и в логах будет some shit will happen with Petro

потому что error имеет такие конструкторы

теперь же меня заставляю тоже самое проделать

при выкидывании исключения,но у нас в классе исключений нет такого конструктора- есть только принимающий строку

как поступить в таком случае- начальник говорит что только через аругменты надо передавать

String format( s ,"Petro") тоже ничего не дает,так как нет %s
29 апр 20, 10:06    [22124708]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
fixxer
Member

Откуда:
Сообщений: 791
Есть MessageFormat, но там нумерованые аргументы, а не позиционные: "some shit will be happen with {0}". Можно просто портировать форматтер из логгера, там ничего сложного не должно быть и кода чуть.
29 апр 20, 11:05    [22124749]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
fixxer
Member

Откуда:
Сообщений: 791
Еще можно наколхозить String.format(s.replaceAll("{}", "%s"), "Petro")
29 апр 20, 11:08    [22124752]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
Zzz79
Member

Откуда:
Сообщений: 168
fixxer,
так мне сделать не дадут)
видать начальство что то напутало,так как у наших ошибок нет конструктора,принимающего String format
29 апр 20, 11:12    [22124756]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Zzz79, у тебя что? LogBack? Log4j2? Slf4j?

У них разный смысл аргументов. Где-то эксепшен может пересекаться со вторым аргументом.
29 апр 20, 11:26    [22124767]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
Zzz79
Member

Откуда:
Сообщений: 168
mayton,
все три)
29 апр 20, 12:14    [22124803]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
Zzz79
Member

Откуда:
Сообщений: 168
в том классе slf4j используется
29 апр 20, 12:14    [22124805]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Похоже действительно нет перегруженного метода с форматированием и множеством аргументов и Throwable одновременно.

http://www.slf4j.org/apidocs/org/slf4j/Logger.html

Скорее всего это связано с Object ...varargs в хвосте.

Напиши свой метод форматирования.
29 апр 20, 13:11    [22124845]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
chpasha
Member

Откуда:
Сообщений: 9207
mayton
Похоже действительно нет перегруженного метода с форматированием и множеством аргументов и Throwable одновременно

а то чем бы он помог? Ему нужно кинуть исключение с текстом из строковой константы, которая заточена под slf4j
29 апр 20, 14:16    [22124906]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Я делаю паузу и жду что скажет автор. Надоело додумывать проблемы.
29 апр 20, 14:18    [22124911]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
chpasha
Member

Откуда:
Сообщений: 9207
он уже все сказал в первом посте
Zzz79

теперь же меня заставляю тоже самое проделать
при выкидывании исключения, но у нас в классе исключений нет такого конструктора- есть только принимающий строку
29 апр 20, 14:30    [22124924]     Ответить | Цитировать Сообщить модератору
 Re: Проставка аргумента в строку  [new]
Zzz79
Member

Откуда:
Сообщений: 168
mayton,
мне просто нужно было чтобы строка ,содержащая в себе {} приняла вместо скобок передаваемый аргумент
тоесть можно было вообще абстрагирвоаться от логера и прочих вещей

я выкидываю исключение кастомное- один из конструкторов там может принимать строку
вот мне туда и нужно было засунуть константу + пеередаваемый параметр,чтобы получилась единая строка

но так нельзя- о чем я и доложил руководству ,сказали строку не надо передавать,используй контструктор который принимает ошибку _+ стринг
а константа теперь только в логере используется
29 апр 20, 15:47    [22125002]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить