журналы регистрации журналов с номером строки

Я хочу написать журнал вроде:

2014-04-17 11:00:16.408 [http-apr-9090-exec-4] DEBUG package.method(line) - log.

поэтому я настраиваю logback.xml в шаблоне, например, как:

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M(%line) - %msg%n

Каждая вещь отображается нормально, за исключением номера строки, и если я добавляю set like

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M %line - %msg%n

Тогда все работает. поэтому в моей конфигурации должно быть что-то не так.
Может ли кто-нибудь мне помочь? Благодарю. Я хочу отображать то, что хочу, и пробел между именем метода и номером строки.

Ответ 1

В инструкциях журнала

В PatternLayout круглые скобки могут использоваться для группировки шаблонов преобразования. Из этого следует, что '(' и ')' имеют особый смысл и должны быть экранированы, если они предназначены для использования в качестве литералов. Дополнительный характер скобок поясняется ниже.

[...]

Если вам нужно обработать символ круглой скобки как литерал, его нужно экранировать, предшествуя каждой круглой скобке обратной косой чертой. Как и в, \(%d{HH:mm:ss.SSS} [%thread]\).

Вам нужно будет избежать скобки с помощью \.

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M\(%line\) - %msg%n

Ответ 2

Примечание для тех, кто сталкивается с этой страницей и ищет способы ее настройки в файле application.properties. Мне удалось избежать скобок, добавив две обратные косые черты.

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M \\(%line\\) - %msg%n

Ответ 3

Для входа в консоль я использую:

<Pattern>%black(%date{"yyyy-MM-dd HH:mm:ss.SSS", "Europe/London"}) %highlight(%-5level) [%green(%X{sessionId})] %yellow(%logger{36}@%method\(%line\)) - %msg%n%throwable</Pattern>

И для входа в файл:

 <pattern>[%date{"yyyy-MM-dd HH:mm:ss,SSSXXX", "Europe/London"}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>