1. syslog协议很简单: syslog发送者发送一小段信息到syslog服务器。接收者一般称为"syslog守护进程"或"syslog服务器"。Logback能向远程syslog守护进程发送消息。实现办法是SyslogAppender。

2. 下面是SyslogAppender的属性

3. 记录事件在syslog里的严重程度是从记录事件的级别转换而来的。DEBUG级别转换为7, INFO是6, WRAN是4, ERROR是3。

4. 由于syslog请求的格式遵循相当严格的规则, 所以SyslogAppender没有用到任何layout。但是, 用"SuffixPattern"选项能显示用户所希望看到的任何信息。

5. 例子

5.1. 新建一个名为SyslogAppender的Java项目, 同时添加相关jar包

5.2. 在src目录下创建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. 创建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协议很简单: syslog发送者发送一小段信息到syslog服务器。");logger.warn("接收者一般称为\"syslog守护进程\"或\"syslog服务器\"。");logger.info("Logback能向远程syslog守护进程发送消息。");logger.debug("实现办法是SyslogAppender。");try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}}
}

5.4. 在大多数据的Linux发行版中, rsyslog是一个预先安装的标准日志后台进程。在客户端/服务端的系统配置中, rsyslog能扮演两个角色; 作为一个日志服务器能从其它设备收集日志信息, 而作为一个日志客户端, rsyslog发送自己内部日志信息到远程日志服务器。

5.5. rsyslog守护进程来自于当前的linux发布版本的预装模块, 但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消息, 需要编辑其配置文件/etc/rsyslog.conf。

5.6. 打开文件进行编辑, 查找到下面的两行所在的位置, 删除其行首的#字符来取消注释, 这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了, UDP是一种比TCP速度快, 但是并不具有TCP一样的数据流的可靠性。所以如果你需要使用可靠的传送机制, 就可以通过取消以下行的注释。

5.7. 接下来的这步, 需要我们来为远程消息创建模板, 并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。还是编辑/etc/rsyslog.conf, 找到GLOBAL DIRECTIVE块, 追加以下的模板

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

5.8. $template RemoteLogs(这里"RemoteLogs"字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中, 其中日志文件的名称是基于远程日志发送机器的主机名以及logback.log进行定义的。

5.9. 其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。

5.10. 符号"& ~"表示了一个重定向规则, 被用来告知rsyslog守护进程停止对日志消息的进一步处理, 并且不要在本地写入。如果没有使用该重定向规则, 那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件, 这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。

5.11. 修改后的GLOBAL DIRECTIVE块

5.12. 运行项目, 查看日志文件位置

5.13. 查看日志文件

013_logback中的SyslogAppender相关推荐

  1. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  2. 面试:第十二章:所有总结

    Java基础 java基本类型哪些,所占字节 byte :1个字节 short :2个字节 char :2个字节 int :4个字节 long :8个字节 float :4个字节 double :8个 ...

  3. linux内核分析(转自某位大哥网上的笔记)

    启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...

  4. log4j中调试与错误日志分开_Log4j 配置

    我们可以通过设置Log Level,定义Appender和在配置文件中指定Layout对象来配置log4j. log4j.properties 文件是一个log4j配置文件,它保留键 - 值对中的属性 ...

  5. java中的日志处理

    java中的日志处理简介 在Java中我们可以使用自定义的.可扩展的日志处理方式.我们不仅可以使用Java中java.util.logging包提供的基本的日志相关的API来进行日志的处理,也可以使用 ...

  6. java中info()_java日志中的info是啥意思

    2019-03-21 回答 首先,在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是 ...

  7. java中log日志的使用(完全版)

    Commons_logging包 Apache通用日志包 他为Log4JLogger:NoOpLog:LogKitLogger:Jdk14Logger:AvalonLogger提供了一共通用的接口进行 ...

  8. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  9. 总结一下在使用某里云服务器的过程中出现过的一些问题

    此文总结在使用阿里云的过程中出现过的问题   想起来就记录一下 本人为言行负责! 海内选择腾讯华为,共勉! k8s不同命名空间的配置文件串掉了 k8s集群服务器购买上后,无法使用外网.连续购买了4台然 ...

最新文章

  1. DevEBox STM32F4x1开发板 设置MicroPython STM32F401CC/TM32F411CE STM32F4x1 核心板 开发板 MicroPython
  2. 改公司demo板块样式
  3. jvm性能调优实战 - 46堆区OOM解析
  4. mysql逆向工程_Mybatis+Mysql逆向工程
  5. CSS各种选择符的优先级
  6. RUP,XP,敏捷原理
  7. 【英语学习】【Daily English】U09 Fashion L03 You're my fashion icon
  8. 解决一个容易忽略的点:pandas无法读取excel的全部列
  9. unity3d android debug log,调试 – 如何在连接到设备时看到MonoDevelop Unity中的Debug.Log输出?...
  10. wincc上位机与1200组态步骤_组态上位机WINCC与PLC通讯连接
  11. linux运行sokit,mac下的socket调试工具---sokit
  12. Python——click模块
  13. Win7浏览器老是自动弹出网页怎么解决?【系统天地】
  14. 用java设计一个矩形类_6-1 设计一个矩形类Rectangle (10分)
  15. 计算机未来的发展趋势和现状,计算机发展现状跟未来发展趋势.docx
  16. 追踪算法MUSTer体验
  17. css3 3d头像,创意css3头像展示_觉唯设计
  18. python-OpenCV信用卡数字识别
  19. mysql:列类型之decimal、numeric
  20. centos查看DHCP租期

热门文章

  1. C#后台利用正则表达式查找匹配字符
  2. 关于qt学习的一点小记录(1)
  3. 高性能WEB开发(6) - web性能测试工具推荐
  4. AIX 中关于文件存储的相关命令
  5. 与ISP合作需要了解哪些?
  6. 置顶 | 2020学习单/读书单(顺境做事,逆境读书)
  7. 解决SpringBoot更新数据到MySQL乱码问题
  8. 暴君第一季/全集Tyrant迅雷下载
  9. 黑马程序员_Java面向对象_包
  10. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...