javascript
使用Spring Boot和Logback登录到Redis
在進行集中式日志記錄時,例如使用Elasticsearch,Logstash和Kibana或Graylog2,您可以為Java應用程序提供幾個選項。 您既可以編寫標準的應用程序日志,也可以使用Logstash解析這些日志,這些日志既可以直接使用,也可以使用logstash-forwarder運送到另一臺計算機。 另外,您可以直接以更合適的格式(如JSON)編寫,因此處理步驟不需要太多的工作來解析消息。 第三種選擇是直接寫入不同的數據存儲,該存儲充當日志消息的緩沖區(qū)。 在本文中,我們正在研究如何在Spring Boot應用程序中配置Logback以將日志消息直接寫入Redis 。
雷迪斯
我們正在使用Redis作為消息的日志緩沖區(qū)。 不是每個人都對Redis感到滿意,但這是一個常見的選擇。 Redis將其內容存儲在內存中,使其非常適合快速訪問,但也可以在必要時將其同步到光盤。 Redis的一個特殊功能是值可以是不同的數據類型,例如字符串,列表或集合。 我們的應用程序使用單個鍵和值對,其中鍵是應用程序的名稱,值是包含我們所有日志消息的列表。 這樣,我們可以在一個Redis實例中處理多個日志應用程序。
在測試設置時,您可能還需要調查Redis中存儲的數據。 您可以使用redis-cli client訪問它。 我收集了一些有用的命令來驗證您的日志消息是否實際上已寫入Redis。
| KEYS * | 顯示此Redis實例中的所有鍵 |
| LLEN key | 顯示key列表中的消息數 |
| LRANGE key 0 100 | 顯示key列表中的前100條消息 |
登錄配置
大多數情況下,使用Logback時,所有配置都使用XML文件。 Appender是將日志輸出發(fā)送到某處的東西。 記錄器用于設置日志級別,并將附加器附加到應用程序的某些部分。
對于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的版本與我們需要的依賴項不匹配。 如果發(fā)生這種情況,我們可以配置要在pom的properties部分中使用的版本。
<properties><commons-pool2.version>2.0</commons-pool2.version><jedis.version>2.5.2</jedis.version> </properties>現在,該應用程序將啟動,您可以看到它也將日志消息發(fā)送到Redis。
加強配置
最好不要在logback.xml配置主機和端口。 當部署到具有不同設置的另一環(huán)境時,您必須更改文件或部署自定義文件。
Logback的Spring Boot集成允許使用主配置文件application.properties來設置一些配置選項,例如要登錄的文件和日志級別。 不幸的是,這是對某些值的一種特殊處理,就我所知,您無法添加自定義值。
但是幸運的是,Logback支持使用環(huán)境變量,因此我們不必依賴配置文件。 設置了環(huán)境變量REDIS_HOST和REDIS_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中 。
現在,根據環(huán)境變量激活了附加程序。 如果愿意,可以跳過本地開發(fā)的設置,而僅在生產系統(tǒng)上設置變量。
結論
輕松啟動Spring Boot或僅登錄Redis都很容易,但是其中一些細節(jié)是正確的工作。 但這值得付出努力:一旦習慣了集中式日志記錄,就不再需要沒有它的系統(tǒng)。
翻譯自: https://www.javacodegeeks.com/2015/01/logging-to-redis-using-spring-boot-and-logback.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用Spring Boot和Logback登录到Redis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称 OPPO Find N3 折叠屏
- 下一篇: 基于第六代宽带框架,诺基亚推出宽带战略