Я ищу способ включить __LINE__
как константу времени компиляции в выводимых сообщениях.__LINE__ эквивалент в Java?
Различные решения, похоже, существуют, но с большим штрафом за выполнение, как предлагается в __LINE__
in JS и __LINE__
in C#. Обычно они всегда основаны на объекте времени выполнения StackFrame
как log4j.
Использование log4j Возможность включения/выключения по необходимости не является вариантом, так как обычно при возникновении ошибки слишком поздно, чтобы включить номера строк, а встроенный код, похоже, не имеет номеров строк больше. . Будет ли возможность либо:
- Предварительно обработайте исходные Java файлы до компиляции, в идеале с чем-то интегрирован с Eclipse, , так что он может быть проверен на DEVELOPPEMENT платформе также.
- Уметь pre-process класс во время загрузки. Тогда накладные расходы были бы незначительными, если амортизировать.
1. На самом деле я использовать безобразный хак: вызов пользовательского препроцессора только после проверки на сервере сборки через ANT уловок
Просто для моего любопытства: зачем вам номер строки в журналах? Когда возникает ошибка, у вас есть полная stacktrace, которая указывает номер строки ... – romaintaz
Иногда в исключении вместо номера строки у меня есть что-то вроде 'Util.java (Inlined Compiled Code)'. И иногда я не имею никакого исключения, просто регистрирую информацию: «быть здесь», «быть здесь», я не хотел беспокоиться о наличии уникальных сообщений (номер строки делает их уникальными в любом случае) –
JVM должен уметь справиться с этой ситуацией. Какую версию Java вы используете? –