日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

013_logback中的SyslogAppender

發(fā)布時(shí)間:2025/4/17 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 013_logback中的SyslogAppender 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. syslog協(xié)議很簡(jiǎn)單: syslog發(fā)送者發(fā)送一小段信息到syslog服務(wù)器。接收者一般稱為"syslog守護(hù)進(jìn)程"或"syslog服務(wù)器"。Logback能向遠(yuǎn)程syslog守護(hù)進(jìn)程發(fā)送消息。實(shí)現(xiàn)辦法是SyslogAppender。

2. 下面是SyslogAppender的屬性

3. 記錄事件在syslog里的嚴(yán)重程度是從記錄事件的級(jí)別轉(zhuǎn)換而來(lái)的。DEBUG級(jí)別轉(zhuǎn)換為7, INFO是6, WRAN是4, ERROR是3。

4. 由于syslog請(qǐng)求的格式遵循相當(dāng)嚴(yán)格的規(guī)則, 所以SyslogAppender沒有用到任何layout。但是, 用"SuffixPattern"選項(xiàng)能顯示用戶所希望看到的任何信息。

5. 例子

5.1. 新建一個(gè)名為SyslogAppender的Java項(xiàng)目, 同時(shí)添加相關(guān)jar包

5.2. 在src目錄下創(chuàng)建logback.xml

<configuration debug="true"><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%-4relative [%thread] %-5level - %msg%n</pattern></encoder></appender><appender name="syslog" class="ch.qos.logback.classic.net.SyslogAppender"> <syslogHost>192.168.25.137</syslogHost> <facility>LOCAL7</facility> <port>514</port><suffixPattern>%-4relative [%thread] %-5level - %msg</suffixPattern></appender><root level="debug"><appender-ref ref="stdout" /><appender-ref ref="syslog" /></root></configuration>

5.3. 創(chuàng)建Syslog.java

package com.fj;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class Syslog {private static final Logger logger = LoggerFactory.getLogger(Syslog.class);public static void main(String[] args) {for(int i = 0; i < 100; i++) {logger.error("syslog協(xié)議很簡(jiǎn)單: syslog發(fā)送者發(fā)送一小段信息到syslog服務(wù)器。");logger.warn("接收者一般稱為\"syslog守護(hù)進(jìn)程\"或\"syslog服務(wù)器\"。");logger.info("Logback能向遠(yuǎn)程syslog守護(hù)進(jìn)程發(fā)送消息。");logger.debug("實(shí)現(xiàn)辦法是SyslogAppender。");try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}} }

5.4. 在大多數(shù)據(jù)的Linux發(fā)行版中, rsyslog是一個(gè)預(yù)先安裝的標(biāo)準(zhǔn)日志后臺(tái)進(jìn)程。在客戶端/服務(wù)端的系統(tǒng)配置中, rsyslog能扮演兩個(gè)角色; 作為一個(gè)日志服務(wù)器能從其它設(shè)備收集日志信息, 而作為一個(gè)日志客戶端, rsyslog發(fā)送自己內(nèi)部日志信息到遠(yuǎn)程日志服務(wù)器。

5.5. rsyslog守護(hù)進(jìn)程來(lái)自于當(dāng)前的linux發(fā)布版本的預(yù)裝模塊, 但是默認(rèn)并沒有啟動(dòng)。為了能夠讓rsyslog守護(hù)進(jìn)程能夠接受外部的消息, 需要編輯其配置文件/etc/rsyslog.conf。

5.6. 打開文件進(jìn)行編輯, 查找到下面的兩行所在的位置, 刪除其行首的#字符來(lái)取消注釋, 這會(huì)使得rsysolog守護(hù)進(jìn)程能夠在UDP端口514上接受日志消息了, UDP是一種比TCP速度快, 但是并不具有TCP一樣的數(shù)據(jù)流的可靠性。所以如果你需要使用可靠的傳送機(jī)制, 就可以通過(guò)取消以下行的注釋。

5.7. 接下來(lái)的這步, 需要我們來(lái)為遠(yuǎn)程消息創(chuàng)建模板, 并告知rsyslog守護(hù)進(jìn)程如何記錄從其他客戶端機(jī)器所接受到的消息。還是編輯/etc/rsyslog.conf, 找到GLOBAL DIRECTIVE塊, 追加以下的模板

$template RemoteLogs,"/var/log/%HOSTNAME%/logback.log" * *.* ?RemoteLogs & ~

5.8. $template RemoteLogs(這里"RemoteLogs"字符串可以為任何其他的描述性的名稱)指令使rsyslog后臺(tái)進(jìn)程將日志消息寫到/var/log下的單獨(dú)的本地日志文件中, 其中日志文件的名稱是基于遠(yuǎn)程日志發(fā)送機(jī)器的主機(jī)名以及l(fā)ogback.log進(jìn)行定義的。

5.9. 其中第二行暗示了我們將RemoteLogs模板應(yīng)用到所有接收到的日志上。

5.10. 符號(hào)"& ~"表示了一個(gè)重定向規(guī)則, 被用來(lái)告知rsyslog守護(hù)進(jìn)程停止對(duì)日志消息的進(jìn)一步處理, 并且不要在本地寫入。如果沒有使用該重定向規(guī)則, 那么所有的遠(yuǎn)程消息都會(huì)在寫入上述描述的日志文件之外同時(shí)被寫入到本地日志文件, 這就意味著日志消息實(shí)際上被寫了兩次。使用該規(guī)則的另外一個(gè)結(jié)果就是syslog服務(wù)器本身的日志消息只會(huì)被以該機(jī)器主機(jī)名命名的專有文件中。

5.11. 修改后的GLOBAL DIRECTIVE塊

5.12. 運(yùn)行項(xiàng)目, 查看日志文件位置

5.13. 查看日志文件

總結(jié)

以上是生活随笔為你收集整理的013_logback中的SyslogAppender的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。