2016-04-27 32 views
0

我想創建以下的logback配置:的java的logback自定義記錄器名稱

<configuration> 
    <appender name="INCOMING_REQUESTS_LOG" class="ch.qos.logback.core.FileAppender"> 
     <file>./logs/incoming_requests.log</file> 
     <append>true</append> 
     <!-- encoders are assigned the type 
      ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
     <encoder> 
      <pattern>%date %-4relative [%thread] %-5level %logger{35} | %msg%n</pattern> 
     </encoder> 
    </appender> 



    <logger name="mysuperduperlogger" level="DEBUG" additivity="false"> 
      <appender-ref ref="INCOMING_REQUESTS_LOG"/> 
    </logger> 
</configuration> 

我可以使用

logger name="mysuperduperlogger" 

爲的logback記錄器名稱以及如何訪問它在我的代碼?在文檔我發現只有記錄器像「com.mypackage.myclass.aa1」

回答

1

當您創建的Logger一個情況下,你可以通過兩種方式做到這一點。

  1. 按類
  2. 通過字符串

如果通過類使用像

private static final Logger LOGGER = LoggerFactory.getLogger(Test.class); 

和類名,包括包org.example.Test然後此logger的名稱配置日誌可以是org.example.Test

如果您使用聖像

private static final Logger LOGGER = LoggerFactory.getLogger("TestLogger"); 

,則環爲這個記錄器配置日誌的名稱可以是TestLogger

所以,如果你想使用mysuperduperlogger你有如下創建Logger實例記錄器名稱。與上述方案

private static final Logger LOGGER = LoggerFactory.getLogger("mysuperduperlogger"); 
+0

問題沒有在日誌文件打印包名稱,而不是正在打印loggername –

+0

@PrasadReddy是的,如果你使用'LoggerFactory.getLogger(字符串loggerName);',將打印過的字符串'loggerName'表示默認行爲。 –

+0

我需要打印包名。怎麼做。因爲我無法知道打印哪個包的字符串名稱。當我使用log4j.properties –