使用 ChatGPT 碰到的坑

最近在使用 ChatGPT 的時候碰到一個小坑,因為某些特殊情況我需要使用 syslog 向 logbeat 中發(fā)送日志。
由于這是一個比較古老的協(xié)議,確實也沒接觸過,所以就想著讓 ChatGPT 幫我生成個例子。
原本我已經(jīng)在 Go 中將這個流程跑通,所以其實只需要將代碼轉(zhuǎn)換為 Java 就可以了,這個我還是很信任 ChatGPT 的.
現(xiàn)在我挺多結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)換都交給了 ChatGPT,省去了不少小工具。
于是便有了這段對話:


看起來挺正常的,我拿過來改改確實也能用。
直到快上線的時候,我發(fā)現(xiàn)一些元信息丟失了,比如日志生產(chǎn)者的 hostname, PID 等,然而這個信息在 Go 卻沒有丟失。
于是我反復(fù)調(diào)試了之前生成的代碼,依然沒有找到問題。
沒辦法,就只有去翻翻 Go 源碼,想看看最終發(fā)出去的數(shù)據(jù)長什么樣子,最后看到這樣幾行代碼:


這樣一看就很清晰了,只是按照 <%d>%s %s %s[%d]: %s%s 的格式將生成的字符串通過網(wǎng)絡(luò)發(fā)送出去。
既然這樣 Java 代碼也很好寫了:
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)過測試數(shù)據(jù)終于對了。
之后我就在想這么簡單的一個問題 Google 上不可能沒有吧,于是直接搜索了 Java syslog 關(guān)鍵字,結(jié)果直接就有一個現(xiàn)成的庫。


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


































