2014-04-09 56 views
4

我對Log4J(以及一般的Java)有點新。我試圖輸出一些日誌到logstash。我遇到了logstash的內置log4j輸入類型的一些問題。出於這個原因,我想使用json_event layout的方法。Log4j - RollingRandomAccessFile中的元素或屬性無效

ERROR: RollingRandomAccessFile contains an invalid element or attribute "layout". 

我不明白爲什麼我得到這個,或如何解決此問題:雖然我相信我擁有了一切正確安裝,當我開始我的應用程序,說我發現了一個錯誤。我更感興趣的是獲取json_event格式的日誌。目前,我的log4j2.xml文件看起來像這樣:

<Configuration status="WARN" monitorInterval="30"> 
    <Appenders> 
    <RollingRandomAccessFile name="RollingFile" fileName="/logs/recent.log" 
     filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz"> 
     <layout class="net.logstash.log4j.JSONEventLayoutV1" /> 
     <Policies> 
     <TimeBasedTriggeringPolicy interval="4" modulate="true"/> 
     <SizeBasedTriggeringPolicy size="100 MB"/> 
     </Policies> 
    </RollingRandomAccessFile> 
    <Async name="AsyncFile"> 
     <AppenderRef ref="RollingFile"/> 
    </Async> 
    </Appenders> 
    <Loggers> 
    <Logger name="com.myApp" level="trace" additivity="false"> 
     <AppenderRef ref="AsyncFile"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="AsyncFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

要開始我的應用程序,我跑在命令行:

java -Dlog4j.configurationFile=log4j2.xml -cp "/home/ubuntu/jsonevent-layout-1.6.jar" -Xms256m -Xmx1024m -jar myApp.jar 

我已經證實,路徑jsonevent-layout-1.6.jar是正確的。我的應用程序成功記錄,如果我刪除新的佈局。所以,我知道log4j運行正常。我知道我的應用運行得很好。這個問題被隔離爲使用json_event佈局。有人可以幫助我解決這個問題嗎?我完全不知道我做錯了什麼。

謝謝

回答

0

您的配置不正確。

這條線;

<layout class="net.logstash.log4j.JSONEventLayoutV1" /> 

想要看起來像這樣;

<RollingRandomAccessFile name="RollingFile" fileName="/logs/recent.log" 
    filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz"> 
    <net.logstash.log4j.JSONEventLayoutV1> 
    ..properties here 
    </net.logstash.log4j.JSONEventLayoutV1> 
    <Policies> 
    <TimeBasedTriggeringPolicy interval="4" modulate="true"/> 
    <SizeBasedTriggeringPolicy size="100 MB"/> 
    </Policies> 
</RollingRandomAccessFile> 
+0

這並不https://github.com/logstash/log4j-jsonevent-layout工作 – juice

+0

的net.logstash.log4j.JSONEventLayoutV1不Log4J2工作。您將在https://github.com/maartenbosteels/log4j-jsonevent-layout上找到與Log4J2兼容的分支。不幸的是,它不在maven中心。所以你必須解決這個問題。 – juice

+0

這也不起作用,使用net.logstash.log4j2.JSONEventLayoutV1沒有幫助。錯誤AppenderName包含無效的元素或屬性「net.logstash.log4j2.JSONEventLayoutV1」 – Xdg

0

從github.com/logstash/log4j-jsonevent-layout的net.logstash.log4j.JSONEventLayoutV1不Log4J2工作。您將在github.com/maartenbosteels/log4j-jsonevent-layout上找到與Log4J2兼容的分支。不幸的是,它不在maven中心。所以你必須解決這個問題。但是,一旦你知道你的log4j2.xml看起來像這樣。

<RollingRandomAccessFile name="RollingFile" fileName="/logs/recent.log" 
    filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz"> 
    <JSONEventLayoutV1> 
    <Policies> 
    <TimeBasedTriggeringPolicy interval="4" modulate="true"/> 
    <SizeBasedTriggeringPolicy size="100 MB"/> 
    </Policies> 
</RollingRandomAccessFile> 
相關問題