基於kafka logback的非同步持久化日誌

2021-08-18 08:30:21 字數 2435 閱讀 2149

最近一直在忙著攻克個人開源的使用者中心中非同步日誌的功能,今天終於完成了這個困擾我許久的問題。

當我們沒有修改配置時,會遇到生產者連線伺服器失敗的情況

advertised.host

.name=47.94

.248

.38

我們需要把host設定為當前伺服器的ip

<?xml version="1.0" encoding="utf-8"?>

name="console_log_pattern"

value="%date | %highlight(%-5level) | %boldgreen(%msg%n)"/>

name="kafka"

name="console"

$pattern>

encoder>

level="info">

ref="kafka"/>

ref="console"/>

root>

// 關閉每次顯示kafka設定資訊

name="org.apache.kafka"

level="off"/>

configuration>

首先我們需要設定乙個formatter,即對訊息的格式化

public

inte***ce formatter

實現類

public

class

messageformatter

implements

formatter else

}}

@slf4j

public class

extends

super.start();

}@override

public void stop()

@override

mapprops = new hashmap<>();

props.put(producerconfig.bootstrap_servers_config, "");

props.put(producerconfig.key_serializer_class_config, stringserializer.class);

props.put(producerconfig.value_serializer_class_config, stringserializer.class);

props.put(producerconfig.request_timeout_ms_config, "1000");

props.put(producerconfig.retries_config, 0);

kafkatemplate = new kafkatemplate<>(new defaultkafkaproduce***ctory(props));

string logstr = this.formatter.format(event);

if (logstr != null)

}}

這裡遇到了乙個坑啊,博主直接使用了自己寫好的生產者不知道為什麼無法傳送訊息,所以新申請乙個kafkatemplate

iloggingevent 則可以進行捕獲日誌。

下面來看一下消費者

@slf4j

@component

public

class

consumer )

public

void

process(consumerrecord record)

string message = record.value().tostring();

if (login_stat.equals(topic)) else

if (log.equals(topic)) else

}long endtime = system.currenttimemillis();

log.info("submitconsumer.time=" + (endtime - starttime));

}}

log實體

@data

@allargsconstructor

@noargsconstructor

@equalsandhashcode(callsuper = true)

@table(name = "log")

@entity

public

class

logextends

baseentity

以上就是完整的非同步日誌

使用者中心位址

大家覺得好用可以給我的github賞點星星哦~

你所能想到的,就能實現,技術是沒有界限的

基於IP,基於port和基於網域名稱的三種

1 基於相同ip不同port的虛擬主機 2 將listen欄位改為 listen 80 listen 8888 以上設定表示使用80以及8888埠 3 更改虛擬主機部分為 documentroot var www html website1 documentroot var www html web...

基於函式的索引 建立基於函式的索引

基於函式的索引 1基於函式的索引是常規的b樹索引。2該索引存放的資料是由表中的資料應用函式後得到的,而不是直接存放表中的資料本身。3如果查詢條件包含與索引相同的函式,就可以使用基於函式的索引,提高查詢速度 舉例 測試表 create table student2 sno varchar2 10 pr...

基於Token的認證和基於宣告的標識

openid解決跨站點的認證問題,oauth解決跨站點的授權問題。認證和授權是密不可分的。而openid和oauth這兩套協議出自兩個不同的組織,協議上有相似和重合的之處,所以想將二者整合有些難度。好在openid connect作為openid的下一版本,在oauth 2.0的協議基礎上進行擴充套...