使用 ChatGPT 碰到的坑

最近在使用 ChatGPT 的時(shí)候碰到一個(gè)小坑,因?yàn)槟承┨厥馇闆r我需要使用 syslog 向 logbeat 中發(fā)送日志。
由于這是一個(gè)比較古老的協(xié)議,確實(shí)也沒(méi)接觸過(guò),所以就想著讓 ChatGPT 幫我生成個(gè)例子。
原本我已經(jīng)在 ?Go ?中將這個(gè)流程跑通,所以其實(shí)只需要將代碼轉(zhuǎn)換為 Java 就可以了,這個(gè)我還是很信任 ChatGPT 的;
現(xiàn)在我挺多結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)換都交給了 ChatGPT,省去了不少小工具。
于是便有了這段對(duì)話(huà):
看起來(lái)挺正常的,我那過(guò)來(lái)改改確實(shí)也能用。
直到快上線(xiàn)的時(shí)候,我發(fā)現(xiàn)一些元信息丟失了,比如日志生產(chǎn)者的 hostname, PID 等,然而這個(gè)信息在 Go 卻沒(méi)有丟失。
于是我反復(fù)調(diào)試了之前生成的代碼,依然沒(méi)有找到問(wèn)題。
沒(méi)辦法,就只有去翻翻 Go 源碼,想看看最終發(fā)出去的數(shù)據(jù)長(zhǎng)什么樣子,最后看到這樣幾行代碼:

這樣一看就很清晰了,只是按照 <%d>%s %s %s[%d]: %s%s 的格式將生成的字符串通過(guò)網(wǎng)絡(luò)發(fā)送出去。
既然這樣 Java 代碼也很好寫(xiě)了:
Socket?socket?=?new?Socket(hostname,port);
socket.setKeepAlive(true);
OutputStream?os?=?socket.getOutputStream();
PrintWriter?pw?=?new?PrintWriter(os,?true);
String?format?=?String.format("<%d>%s?%s?%s[%d]:?%s%s",?6?,?rfc3164DateFormat.format(new?Date()),?"test",?"test",?0,?message,?"\n");
pw.println(format);
經(jīng)過(guò)測(cè)試數(shù)據(jù)終于對(duì)了。
之后我就在想這么簡(jiǎn)單的一個(gè)問(wèn)題 Google 上不可能沒(méi)有吧,于是直接搜索了 Java syslog 關(guān)鍵字,結(jié)果直接就有一個(gè)現(xiàn)成的庫(kù)。

而且實(shí)現(xiàn)也是類(lèi)似的。
我相信應(yīng)該有不少朋友也有被 ChatGPT 一本正經(jīng)的胡說(shuō)八道誤導(dǎo)過(guò),至少在當(dāng)前的環(huán)境下一些簡(jiǎn)單的東西我還是決定優(yōu)先 Google。

通過(guò) Pulsar 源碼徹底解決重復(fù)消費(fèi)問(wèn)題

一個(gè)詭異的 Pulsar InterruptedException 異常
