logback redis

在进行集中式日志记录时,例如使用Elasticsearch,Logstash和Kibana或Graylog2,您可以为Java应用程序提供多个选项。 您既可以编写标准的应用程序日志,也可以使用Logstash解析这些日志,这些日志既可以直接使用,也可以使用logstash-forwarder运送到另一台计算机。 或者,您可以直接以更合适的格式(如JSON)编写,因此处理步骤不需要太多的工作来解析消息。 第三种选择是直接写入不同的数据存储,该存储充当日志消息的缓冲区。 在本文中,我们正在研究如何在Spring Boot应用程序中配置Logback以将日志消息直接写入Redis 。

雷迪斯

我们正在使用Redis作为消息的日志缓冲区。 不是每个人都对Redis感到满意,但这是一个常见的选择。 Redis将其内容存储在内存中,使其非常适合快速访问,但也可以在必要时将其同步到光盘。 Redis的一个特殊功能是值可以是不同的数据类型,例如字符串,列表或集合。 我们的应用程序使用单个键和值对,其中键是应用程序的名称,值是包含我们所有日志消息的列表。 这样,我们可以在一个Redis实例中处理多个日志记录应用程序。

在测试设置时,您可能还需要调查Redis中存储的数据。 您可以使用redis-cli client访问它。 我收集了一些有用的命令来验证您的日志消息是否实际上已写入Redis。

命令 描述
KEYS * 显示此Redis实例中的所有键
LLEN key 显示key列表中的消息数
LRANGE key 0 100 显示key列表中的前100条消息

登录配置

大多数情况下,使用Logback时,所有配置都使用XML文件。 Appender是将日志输出发送到某处的东西。 记录器用于设置日志级别,并将附加器附加到应用程序的某些部分。

对于Spring Boot,Logback可用于使用spring-boot-starter-logging的任何应用程序,它也是常见spring-boot-starter-web的依赖项。 可以将配置添加到位于src/main/resources名为logback.xml的文件中。

Spring Boot随附了已正确配置的文件和控制台附加程序。 我们可以在文件中包括基本配置,以保留所有预定义的配置。

为了登录到Redis,我们需要添加另一个appender。 一个不错的选择是相当轻巧的logback-redis-appender ,它使用Java客户端Jedis。 日志消息直接以JSON格式写入Redis,因此非常适合logstash。 我们可以使用以下配置将Spring Boot日志记录到Redis的本地实例。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender"><host>localhost</host><port>6379</port><key>my-spring-boot-app</key></appender><root level="INFO"><appender-ref ref="LOGSTASH" /><appender-ref ref="CONSOLE" /><appender-ref ref="FILE" /></root>
</configuration>

我们配置一个appender命名LOGSTASH那就是一个实例RedisAppender 。 为本地Redis实例设置了主机和端口,键标识用于日志的Redis键。 还有更多可用选项,例如将日志消息推送到Redis的间隔。 浏览该项目的自述文件以获取更多信息。

Spring Boot依赖关系

为了使日志工作正常,我们当然必须向pom添加logback-redis-appender依赖项。 根据您的Spring Boot版本,您可能会在日志文件中看到一些缺少方法的错误。

这是因为Spring Boot 管理其内部使用的依赖项,而jedis和commons-pool2的版本与我们所需的依赖项不匹配。 如果发生这种情况,我们可以配置要在pom的properties部分中使用的版本。

<properties><commons-pool2.version>2.0</commons-pool2.version><jedis.version>2.5.2</jedis.version>
</properties>

现在,该应用程序将启动,您可以看到它也将日志消息发送到Redis。

加强配置

最好不要在logback.xml配置主机和端口。 当部署到具有不同设置的另一环境时,您必须更改文件或部署自定义文件。

Logback的Spring Boot集成允许使用主配置文件application.properties来设置一些配置选项,例如要登录的文件和日志级别。 不幸的是,这是对某些值的特殊处理,就我所知,您无法添加自定义值。

但是幸运的是,Logback支持使用环境变量,因此我们不必依赖配置文件。 设置环境变量REDIS_HOSTREDIS_PORT您可以对附加程序使用以下配置。

<appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender"><host>${REDIS_HOST}</host><port>${REDIS_PORT}</port><key>my-spring-boot-app</key></appender>

我们甚至可以更进一步。 要仅在设置了属性时激活附加程序,可以将条件处理添加到配置中。

<if condition='isDefined("REDIS_HOST") && isDefined("REDIS_PORT")'><then><appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender"><host>${REDIS_HOST}</host><port>${REDIS_PORT}</port><key>my-spring-boot-app</key></appender></then></if>

您可以使用Java表达式来确定是否应评估该块。 当附加器不可用时,Logback将仅记录错误并使用配置的任何其他附加器。 为此,您需要将Janino库添加到pom中 。

现在,根据环境变量激活了附加程序。 如果愿意,可以跳过本地开发的设置,而仅在生产系统上设置变量。

结论

轻松启动Spring Boot或仅登录Redis都很容易,但是其中一些细节是正确的工作。 但这值得付出努力:一旦习惯了集中式日志记录,就不再需要没有它的系统。

翻译自: https://www.javacodegeeks.com/2015/01/logging-to-redis-using-spring-boot-and-logback.html

logback redis

logback redis_使用Spring Boot和Logback登录到Redis相关推荐

  1. 使用Spring Boot和Logback登录到Redis

    在进行集中式日志记录时,例如使用Elasticsearch,Logstash和Kibana或Graylog2,您可以为Java应用程序提供几个选项. 您既可以编写标准的应用程序日志,也可以使用Logs ...

  2. spring boot配置logback日志

    spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...

  3. 基于Spring Boot的Logback日志轮转配置

    在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的.我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异.这里就结合Spring Boot配置一下L ...

  4. spring boot 配置logback,logback不打印日志

    spring boot 日志简介 spring boot只依赖 Commons Logging API,而不依赖其他日志(jul.logback.log4j).要想使用logback,必须引入jcl- ...

  5. Spring Boot 入门之登录创建

    Spring Boot 入门之登录创建 一.在IDEA中创建一个springboot项目 1.使用Spring Initializr创建项目 2.选定Developer Tools中的Spring B ...

  6. Spring Boot集成第三方登录之微信登录

    Spring Boot集成第三方登录之微信登录 准备工作 注册 创建网站应用 网站应用开发指南 授权流程 请求CODE 获取access_token 使用access_token调用接口 获取用户个人 ...

  7. Spring Boot集成第三方登录之微博登录

    Spring Boot集成第三方登录之微博登录 准备工作 网站接入 开发者信息认证 创建应用 流程分析 引导授权用户 用户授权 授权成功 换取Access Token HTTP客户端 使用Access ...

  8. spring boot 1.5.4 整合redis、拦截器、过滤器、监听器、静态资源配置(十六)

    上一篇:spring boot 1.5.4 整合webService(十五) 1      Spring Boot整合redis和缓存 Spring Boot中除了对常用的关系型数据库提供了优秀的自动 ...

  9. logback property 默认值_看完这篇文章还不会给spring boot配置logback,请你吃瓜

    每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定. 放弃不难,但坚持很酷~ 一.logback日志框架 logback 是一个开源的日志组件,由三个部分组成:logback-core,logba ...

最新文章

  1. 服务器到底长什么样子啊(#゚Д゚)?
  2. 模为2的逆元是什么_逆元
  3. oracle文件管理
  4. 初中参观机器人博物馆的作文_展馆导览机器人好不好用?小笨展馆机器人案例...
  5. C++ 直接插入排序
  6. Fast Marching on 3D Meshes
  7. Coding the Matrix Week 1 The Vector Space作业
  8. 新中大软件 java班不_新中大gsoft-12.0-软件安装说明.doc
  9. wgs84坐标系拾取工具_COORD坐标转换
  10. Root file specified for compilation Vetur
  11. gem5中的O3 Pipeline Viewer Visualization实现方法
  12. RDS-TMC(Traffic Message Channel)蕴藏的商机不可小视
  13. win7 x64下安装python-opencv 及 “not a supported wheel”解决
  14. 一文搞懂G1垃圾回收器
  15. Java计算税收代码实现
  16. 全球与中国工业级氟化氢铵市场现状及未来发展趋势2022
  17. bazel 构建问题总结
  18. XML数据交换的安全解决方案
  19. PyQt5_pyqtgraph蜡烛图
  20. 设计模式总结--李建忠

热门文章

  1. jzoj6274-[NOIP提高组模拟1]梦境【贪心,堆】
  2. 2019纪中暑假游记+总结
  3. 欢乐纪中A组周六赛【2019.5.18】
  4. P2101-命运石之门的选择【dp,离散化】
  5. 【2018.3.10】模拟赛之一-ssl2574Closest【深搜】
  6. Wannafly 挑战赛27 题解
  7. codeforces 932D Tree 倍增法+二分搜索
  8. Oracle入门(十二G)之序列
  9. 装饰器模式和代理模式的区别
  10. 祝张远远和杨凯博同学生日快乐 | 班级日常分享