2014-10-27 2 views
0

В следующей конфигурацииКак распечатать текущее имя класса с помощью журнала?

<configuration> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} %C{0}: %msg%n</pattern> 
     </encoder> 
    </appender> 

    <root level="debug"> 
     <appender-ref ref="STDOUT" /> 
    </root> 

</configuration> 

и следующий код

package tests; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class Runner { 

    private static final Logger log = LoggerFactory.getLogger(Runner.class); 



    public static void main(String[] args) { 

     new Runner().new Parent().hello(); 
     new Runner().new Child().hello(); 
    } 

    public class Parent { 

     public void hello() { 
      log.info("Hello from " + getClass().getSimpleName()); 
     } 
    } 

    public class Child extends Parent{ 

    } 
} 

выходы

20:42:13.811 Runner$Parent: Hello from Parent 
20:42:13.814 Runner$Parent: Hello from Child 

что означает, что выходы %C{0} нечто иное, чем this.getClass().getSimpleName().

Возможно ли вывести то же, что и последний с рисунком обратного хода?

ответ

0

страницу конфигурации макета из Logback имеет это заявил:

%C 

или

%class 

от: Layouts

+0

'% C' - это то, что я использовал. –

0

В Logback конфигурационном файле, используйте спецификатор преобразования: % класс { 0} для вывода имени класса. Пример:

<pattern>%d %-5level %class{0}: %msg%n</pattern>

Else, попробуйте использовать простое имя Logger по %logger{0} и использовать нужный регистратор для каждого класса.

+0

'% class' выводит имя класса, в котором закодирован вызов печати, тогда как мне нужно распечатать текущее имя класса, которое может быть потомком. –

 Смежные вопросы

  • Нет связанных вопросов^_^