2015-09-21 42 views

回答

6

看一看格式修飾符部分:

http://logback.qos.ch/manual/layouts.html#formatModifiers

格式修飾符

默認情況下,相關信息是原樣輸出。但是,藉助格式修改器,可以更改每個數據字段的最小和最大寬度以及理由。

...從最終

截斷由期之後追加一個減號是可能的。在這種情況下,如果最大字段寬度爲8,數據項的長度爲10個字符,則數據項的最後兩個字符將被丟棄。

+0

噢,所以這是方括號是。我忽略了令牌代碼周圍的任何數字,認爲它與理由相關。 –

+0

不知道爲什麼這是downvoted。這不是我。可能有人會在他們的迴應中舉個例子。 –

+0

不用擔心。我可以看到他們的觀點。很高興你有答案:) –

0

如果你只需要截斷消息,Adrian的回答非常好。但在我的情況下,我想添加「... [truncated]」以防截斷消息。

我用a custom convertors機制用於此目的 - 通過執行以下步驟:

  1. 定義您的自定義轉換器:
public class LongMessagesConverter extends ClassicConverter { 
    private static final int MAX_FORMATTED_MESSAGE_LENGTH = 25600; 
    private static final String TRUNCATION_SUFFIX = "... [truncated]"; 
    private static final int TRUNCATED_MESSAGE_SIZE = 
      TRUNCATION_SUFFIX.length() + MAX_FORMATTED_MESSAGE_LENGTH; 

@Override 
public String convert(ILoggingEvent event) { 
    String formattedMessage = event.getFormattedMessage(); 
    if (formattedMessage == null || 
       formattedMessage.length() < MAX_FORMATTED_MESSAGE_LENGTH) { 
     return formattedMessage; 
    } 
    return new StringBuilder(TRUNCATED_MESSAGE_SIZE) 
      .append(formattedMessage.substring(0, MAX_FORMATTED_MESSAGE_LENGTH)) 
      .append(TRUNCATION_SUFFIX) 
      .toString(); 
    } 
} 
  • 添加到您的logback.xml的定義如下:
  • <conversionRule conversionWord="boundedMsg" converterClass="your.package.LongMessagesConverter"/> 
    
  • 替換%MSG令牌%boundedMsg在郵件格式圖案