Можно ли как-то лучше переписать данный пример касательно логирования расположения

ошибки? может практики какие, стандарты? пробовал tracing::error!(), но мне нужно бы доступ к информации о расположении ошибки в файле получить, например чтобы ссылку на гитхаб сгенерить.
struct MyCustomErrorOne {
pub source: MyCustomErrorTwo,
pub file: &'static str,
pub line: u32,
pub column: u32,
}
impl MyCustomErrorOne {
pub fn get_where_was(&self) -> String;//some impl
pub fn get_github_source_link(&self) -> String;//some impl
}
struct MyCustomErrorTwo {
pub source: SomeError,
pub file: &'static str,
pub line: u32,
pub column: u32,
}
impl MyCustomErrorTwo {
pub fn get_where_was(&self) -> String;//some impl
pub fn get_github_source_link(&self) -> String;//some impl
}
pub fn one() -> Result<(), MyCustomErrorOne> {
if let Err(e) = two() {
let err = MyCustomErrorOne {
source: e,
file: file!(),
line: line!(),
column: column!(),
};
println!("{}", err.get_where_was());//тут может быть еще и tracing
println!("{}", err.get_github_source_link());//тут может быть еще и tracing
return Err(err);
}
Ok(())
}
pub fn two() -> Result<(), MyCustomErrorTwo> {
if let Err(e) = some_lib_fn_two() {
let err = MyCustomErrorTwo {
source: e,
file: file!(),
line: line!(),
column: column!(),
};
println!("{}", err.get_where_was());//тут может быть еще и tracing
println!("{}", err.get_github_source_link());//тут может быть еще и tracing
return Err(err);
}
Ok(())
}

2 ответов

14 просмотров

https://stackoverflow.com/questions/61810740/log-source-file-and-line-numbers

Sergey-Shmakov Автор вопроса
Azamat Galiyev
https://stackoverflow.com/questions/61810740/log-s...

используя этот вариант на сколько я понимаю у меня будет два вывода логов об ошибке - из функции two и из функции one. что использовать если мне нужно выводить оригинальную ошибку из функции two без вызова логов из функции one? например вот такой пример из node.js ./some_file.ts:29:13 14:55:26 18.07.22 Error: ENOENT: no such file or directory, open '/service-worker.js' at Object.openSync (fs.js:457:3) at Object.readFileSync (fs.js:359:35) т.е оригинальная ошибка + stack trace. Написал кое что подобное на расте. но на это ушло куча времени. думал через процедурный макрос над структурой\энумом ошибки сделать(кастомизированный display, методы получения файла линии дочерней ошибки и тд). Ищу альтернативу

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта