2016-07-08 42 views
0

到系統日誌時使用JBoss 5.1本附加器:如何配置消息格式WildFly

<appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="Facility" value="LOCAL7"/> 
    <param name="FacilityPrinting" value="true"/> 
    <param name="SyslogHost" value="localhost"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/> 
    </layout> 
</appender> 

我看到一條消息進行日誌記錄(在事件日誌分析器):

local7:[13:32:45,763,SendingPool] Sending pool task executed. Pool size is [0 

在WildFly 8.2 0.1我有處理程序下配置:

<syslog-handler name="SYSLOG"> 
     <level name="DEBUG"/> 
     <server-address value="localhost"/> 
     <facility value="local-use-7"/> 
    </syslog-handler> 

消息:

1 2016-07-08T13:30:34.943+03:00 - java 910 com.mycompany.component.p - Sending pool task executed. Pool size is [0 

我如何更改syslog的消息格式?

回答

1

不幸的是,沒有辦法使用syslog-handler來格式化消息。這是創建時的疏忽,並且有一個長期存在的JIRA來解決這個問題。

但是,您可以使用custom-handler並使用格式化程序。

/subsystem=logging/pattern-formatter=syslog-formatter:add(pattern="local7: [%d{hh:mm:ss,SSS},%c{1}] %s") 
/subsystem=logging/custom-handler=syslog:add(class=org.jboss.logmanager.handlers.SyslogHandler, module=org.jboss.logmanager, named-formatter=syslog-formatter, properties={hostname="localhost", facility="LOCAL_USE_7", protocol="TCP", useCountingFraming=true}) 
/subsystem=logging/root-logger=ROOT:add-handler(name=syslog) 

注意,如果你想在local7:要打印的需要是格式的一部分。沒有辦法預先設置消息的設施名稱。

綜觀:

1 2016-07-08T13:30:34.943+03:00 - java 910 com.mycompany.component.p - Sending pool task executed. Pool size is [0 

看起來像原始消息減去優先級。默認情況下,系統日誌處理程序將使用RFC 5424格式。如果要在上述自定義處理程序添加操作中使用RFC 3164將syslogType=RFC3163添加到properties屬性並刪除useCountingFraming=true。請注意,useCountingFraming=true可能需要刪除。這取決於你的系統日誌服務器設置。

+0

有了這個設置,WildFly在幾分鐘內掛起並且沒有登錄到服務器,我試着用andCountingFountingFraming。 – Rustam

+0

您的系統日誌服務器設置爲使用UDP還是TCP?我以爲log4j默認爲TCP,所以我認爲這是應該使用的,但我可能是錯的。 –

+0

TCP,服務器默認514端口 – Rustam