2014-10-27 1754 views
0

以下配置如何用logback打印当前类名?

<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'就是我用过的。 – 2014-10-27 17:58:00

0

在的logback配置文件,使用转换说明:%类{ 0}输出类名称。例如:

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

否则,尝试通过使用%logger{0}记录仪简单的名称,并使用所希望的记录器为每个类。

+0

'%class'输出打印调用编码的类的名称,而我需要打印当前类名,该类名可以是后代。 – 2014-10-28 07:01:03