五步輕松設(shè)計(jì)出用戶操作日志
日志記錄了代碼的執(zhí)行過程,根據(jù)目的不同,可以分為系統(tǒng)日志和操作日志。本文作者對(duì)操作日志進(jìn)行了介紹,分析如何用五個(gè)步驟設(shè)計(jì)出用戶操作日志,一起來看一下吧。
一、什么是日志
日志記錄了代碼的執(zhí)行過程。根據(jù)目的不同,可分為系統(tǒng)日志和操作日志。
1)系統(tǒng)日志
記錄系統(tǒng)中硬件、軟件和系統(tǒng)問題的信息,同時(shí)還可以監(jiān)視系統(tǒng)中發(fā)生的事件。開發(fā)人員可以通過它來檢查錯(cuò)誤發(fā)生的原因,或者尋找受到攻擊時(shí)攻擊者留下的痕跡。系統(tǒng)日志包括系統(tǒng)日志、應(yīng)用程序日志和安全日志。由于系統(tǒng)日志主要是為開發(fā)人員排查問題提供依據(jù)的,因此可讀性沒那么高。
2)操作日志
記錄所有用戶在系統(tǒng)中的操作過程和操作結(jié)果,如登錄記錄、修改記錄等。操作日志主要是為用戶服務(wù),幫助他們查看歷史操作記錄,因此對(duì)可讀性要求較高。
二、什么是操作日志
具體而言就是記錄“誰在什么時(shí)間、什么位置,對(duì)什么東西做了什么操作,從而產(chǎn)生了哪些變動(dòng)”,因此一個(gè)完備的操作日志應(yīng)包含以下信息:
- 用戶(操作人及賬號(hào)):誰執(zhí)行了該操作
- 操作時(shí)間:什么時(shí)間執(zhí)行了該操作
- 操作位置(業(yè)務(wù)菜單):在哪個(gè)模塊上執(zhí)行了該操作,如用戶管理、訂單管理等
- 操作對(duì)象:對(duì)哪個(gè)對(duì)象執(zhí)行了該操作,如某道題、某份試卷
- 操作類型:具體執(zhí)行了哪個(gè)操作,如登錄、瀏覽、新增、刪除等
- 變動(dòng)值:在執(zhí)行該操作后產(chǎn)生了哪些變化,主要針對(duì)于“編輯”類型的操作,如將題目難度由【難度一】修改為【難度二】
除了以上內(nèi)容,還可根據(jù)業(yè)務(wù)場(chǎng)景補(bǔ)充記錄其他字段:
- 操作頁面:記錄執(zhí)行操作時(shí)調(diào)用的接口,如/crowd/system/user/list,當(dāng)出現(xiàn)異常時(shí),便于技術(shù)人員快速定位問題
- 登錄IP:記錄用戶在何地執(zhí)行的操作,如125.71.135.54四川省成都市武侯區(qū)電信
- 設(shè)備信息:記錄用戶通過哪種設(shè)備執(zhí)行的操作,如Chrome101、Windows7、PC
- 業(yè)務(wù)相關(guān)字段:為了滿足業(yè)務(wù)需要而記錄的字段,如下圖所示
拓展1:以上默認(rèn)只記錄操作成功的日志,如果業(yè)務(wù)需要,還可以增加“操作狀態(tài)”字段來記錄操作失敗的日志,同時(shí)記錄失敗原因。
拓展2:若多個(gè)項(xiàng)目均要記錄用戶的操作,不需要為每個(gè)項(xiàng)目單獨(dú)開發(fā)一套操作日志功能,而應(yīng)該設(shè)計(jì)一個(gè)用戶操作日志的公共組件(本文只討論為單一項(xiàng)目設(shè)計(jì)用戶操作日志,組件的設(shè)計(jì)不在本文討論范圍內(nèi),不過設(shè)計(jì)組件時(shí)仍需先理清各項(xiàng)目的用戶操作日志,再同開發(fā)討論如何抽離)。
三、五步設(shè)計(jì)用戶操作日志
1. 梳理操作列表
梳理操作列表就是羅列出用戶的哪些操作要在用戶操作日志中記錄。具體的方法是:在功能列表的基礎(chǔ)上,根據(jù)業(yè)務(wù)需要篩選出要記錄的功能。
如上圖所示,左邊是產(chǎn)品的功能列表,經(jīng)過產(chǎn)品經(jīng)理的調(diào)研和分析,認(rèn)為本項(xiàng)目的用戶操作日志中不需要記錄查看及查詢操作,并且也不需要記錄公告管理中的所有操作,因此制作了右邊的操作列表。
2. 梳理記錄字段
在本步驟中需要產(chǎn)品經(jīng)理明確針對(duì)每個(gè)操作要記錄的字段有哪些。至少應(yīng)包括用戶、操作時(shí)間、操作位置、操作對(duì)象和操作類型,再根據(jù)業(yè)務(wù)的需要增加變動(dòng)值、IP地址、設(shè)備信息、操作頁面等其他字段。
3. 填充具體規(guī)則
搭建好操作列表和記錄字段的框架后,接下來就是往里面填充具體的規(guī)則了,即如何將操作日志以通俗易懂的方式展現(xiàn)出來。
如上圖所示:添加、刪除、停用等操作由于只涉及一個(gè)對(duì)象的一個(gè)狀態(tài),所以處理起來比較簡單,如[2022-10-10 19:10:26][小王1816121315]在[學(xué)院管理]中[添加]了[學(xué)院一(002)];
批量操作可以被看成是多次對(duì)單個(gè)對(duì)象進(jìn)行操作,也只涉及一個(gè)狀態(tài),如[2022-10-10 19:10:26][小王1816121315]在[學(xué)院管理]中[添加]了[學(xué)院一(002)、學(xué)院二(003)、學(xué)院三(004)];
最復(fù)雜的是對(duì)編輯操作的處理,因?yàn)樯婕暗絻蓚€(gè)狀態(tài),即編輯前和編輯后,下文會(huì)以“編輯”操作為例介紹如何記錄兩個(gè)狀態(tài)的操作內(nèi)容。
注:需要根據(jù)業(yè)務(wù)需求決定日志記錄的顆粒度,可只記錄到操作類型,也可記錄到每次操作的詳細(xì)內(nèi)容。
1)有限值
針對(duì)有限內(nèi)容(如下拉框、多選框、復(fù)選框等)可直接記錄前后變化,如題目難度:將[難度一]修改為[難度二]。
2)短文本
由于文本內(nèi)容較短,也可以直接記錄編輯前和編輯后的內(nèi)容,如學(xué)院名稱:將[學(xué)院一]修改為[學(xué)院二]。
3)長文本
由于文字較多,若像短文本那樣將全部內(nèi)容都展示出來,則不利于用戶看出變化。這時(shí)就可先按“行”梳理長文本內(nèi)容,編輯后只給用戶展示出變動(dòng)行的內(nèi)容,如下圖所示,可以很清晰地看出用戶刪除了第285-294行,新增了289-298行。
4)圖片和音視頻
圖片和音視頻是以地址的形式存儲(chǔ)的,因此也應(yīng)該以地址的形式進(jìn)行記錄,如附件:將[https://cos.1.png]修改為[https://cos.2.png]。
5)復(fù)雜內(nèi)容
編輯一個(gè)閱讀理解題目,可以同時(shí)包含有限值、短文本、長文本、圖片和音視頻,并且選項(xiàng)和子題的個(gè)數(shù)也不可控,如果按上述方案對(duì)每種數(shù)據(jù)分開記錄,會(huì)十分繁瑣,也不利于用戶閱讀。因此對(duì)于復(fù)雜內(nèi)容,需要整體保存,并支持查看編輯前和編輯后的記錄(類似于歷史版本)。
4. 補(bǔ)充其他附屬功能
除上述的主要規(guī)則外,關(guān)于用戶操作日志還可根據(jù)需要設(shè)計(jì)其他附屬功能,包括:
1)查詢篩選
為了便于用戶查找,應(yīng)針對(duì)操作字段提供查詢和篩選功能,如按用戶信息進(jìn)行模糊搜索、按操作時(shí)間段進(jìn)行查詢、按業(yè)務(wù)菜單和操作類型(篩選時(shí)要合并類型,如“新增學(xué)生”和“新增老師”,都屬于“新增”類型)進(jìn)行篩選等。
2)分頁
分頁展示數(shù)據(jù),并且可以設(shè)置每頁顯示條數(shù)。
3)排序
按操作時(shí)間正序或倒序排列。
4)自定義顯示列字段
若一次顯示的字段太多,可由用戶自定義選擇。
5)下載
能夠根據(jù)條件下載用戶操作日志。
6)自動(dòng)清理
用戶操作日志更新頻繁,長時(shí)間會(huì)積累大量數(shù)據(jù),占據(jù)存儲(chǔ)空間,并且操作日志具有時(shí)效性,過早的日志沒有查詢價(jià)值,因此可通過存儲(chǔ)天數(shù)或存儲(chǔ)條數(shù)的限制自動(dòng)清理無用日志。
5. 完善原型和PRD
根據(jù)前面的分析結(jié)果完成產(chǎn)品原型和產(chǎn)品需求文檔的設(shè)計(jì)。
至此五個(gè)步驟已全部介紹完成。
專欄作家
產(chǎn)品亂彈,公眾號(hào):產(chǎn)品亂彈,人人都是產(chǎn)品經(jīng)理專欄作家。在教育行業(yè)死扛,在創(chuàng)業(yè)公司瞎忙。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
點(diǎn)贊,非常詳實(shí)
長文本那段描述沒有看懂,只記錄哪行內(nèi)容發(fā)生了變動(dòng),不記錄具體變更了什么內(nèi)容,是嗎?
有沒有相關(guān)的原型,借鑒下
很實(shí)用!
自動(dòng)清理的天數(shù)這個(gè)設(shè)置是放在界面上給用戶操作還是代碼中使用配置參數(shù)實(shí)現(xiàn)好一些呢?
不錯(cuò) 蠻實(shí)在的內(nèi)容
贊
操作類型和操作模塊是不是寫死的?
寫不寫死都得在埋點(diǎn)的時(shí)候 通過代碼調(diào)用呀
贊
寫的很實(shí)用、很詳細(xì),謝謝作者
非常有用,感謝分享