日志記錄是軟件開(kāi)發(fā)中的一個(gè)重要主題嘹承,特別是當(dāng)您需要分析生產(chǎn)環(huán)境中的bug和其他意外事件時(shí)。實(shí)現(xiàn)日志記錄通常很簡(jiǎn)單如庭。但正如你可能經(jīng)歷過(guò)的叹卷,日志要比看起來(lái)復(fù)雜得多。這就是為什么你可以在博客上找到很多關(guān)于它的文章坪它。
作為一名經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員骤竹,您應(yīng)該了解可用的不同日志記錄框架、常見(jiàn)陷阱和最佳實(shí)踐往毡,當(dāng)然還應(yīng)該了解在常見(jiàn)部署場(chǎng)景中使用的日志文件的類(lèi)型蒙揣。在這篇文章中,我將關(guān)注后者开瞭。我將告訴你在幾乎所有開(kāi)發(fā)或生產(chǎn)環(huán)境中可以找到的四種不同類(lèi)型的日志懒震。
讓我們從最常見(jiàn)的日志類(lèi)型開(kāi)始:應(yīng)用程序日志罩息。大多數(shù)開(kāi)發(fā)人員在談到日志記錄時(shí)會(huì)想到這個(gè)日志。原因很簡(jiǎn)單个扰。它們的應(yīng)用程序生成此日志瓷炮。它包含應(yīng)用程序編寫(xiě)的各種錯(cuò)誤消息、警告或其他事件递宅。這些消息可以提供連接到特定用例的邏輯娘香、高級(jí)信息。應(yīng)用程序日志可能是本文中提到的最重要的日志類(lèi)型办龄,因?yàn)槟呀?jīng)對(duì)其進(jìn)行了完全控制烘绽。每個(gè)日志消息需要提供有用的信息,幫助您了解應(yīng)用程序的行為土榴。典型的例子是:
在用例中發(fā)生的異常的堆棧跟蹤诀姚。
關(guān)于外部系統(tǒng)慢響應(yīng)時(shí)間的警告消息。
一個(gè)用例被觸發(fā)或完成的信息玷禽。
下一個(gè)有趣和重要的類(lèi)型是Web或應(yīng)用服務(wù)器的日志。大多數(shù)企業(yè)應(yīng)用程序被部署到web服務(wù)器(例如呀打,Apache Tomcat)或應(yīng)用服務(wù)器(例如矢赁,Wildfly或WebSphere.ty)。他們的日志文件為您提供有關(guān)技術(shù)問(wèn)題和服務(wù)器當(dāng)前狀態(tài)的信息贬丛。每個(gè)服務(wù)器的配置和功能不同撩银,我不會(huì)在本文中詳細(xì)解釋它們。但是請(qǐng)確保檢查服務(wù)器的文檔并相應(yīng)地配置它豺憔。從服務(wù)器獲取正確的信息可以在及時(shí)識(shí)別潛在問(wèn)題和服務(wù)器停機(jī)之間產(chǎn)生差異额获。
還有一個(gè)不常見(jiàn)的日志是垃圾收集器日志。垃圾回收器提供自動(dòng)內(nèi)存管理恭应。它跟蹤在JVM內(nèi)實(shí)例化的所有對(duì)象抄邀,并移除不再使用的對(duì)象。這是一項(xiàng)非常復(fù)雜的任務(wù)昼榛,有幾種不同的垃圾收集器實(shí)現(xiàn)可用境肾。一般來(lái)說(shuō),Java中的垃圾回收過(guò)程非常高效胆屿。這是非常有效的奥喻,有很多應(yīng)用程序使用標(biāo)準(zhǔn)配置的默認(rèn)實(shí)現(xiàn)。但是非迹,如果應(yīng)用程序必須處理高負(fù)載或使用許多復(fù)雜的對(duì)象結(jié)構(gòu)环鲤,應(yīng)用程序的性能可能會(huì)隨著時(shí)間而降低。當(dāng)垃圾收集器需要花費(fèi)越來(lái)越多的時(shí)間來(lái)管理可用內(nèi)存時(shí)憎兽,這種情況經(jīng)常發(fā)生冷离。垃圾收集器日志為您提供分析所有垃圾收集器活動(dòng)的必要信息吵冒。默認(rèn)情況下,垃圾收集器日志將被停用酒朵。您需要用一組命令行屬性激活它桦锄。
所有先前討論的日志都是由JVM或在JVM中運(yùn)行的應(yīng)用程序編寫(xiě)的。除了這些日志之外蔫耽,程序員們還應(yīng)該熟悉操作系統(tǒng)所寫(xiě)的日志结耀。作為Java開(kāi)發(fā)人員,您很可能永遠(yuǎn)不會(huì)自己編寫(xiě)這些日志匙铡。但是图甜,您的操作系統(tǒng)將某些事件寫(xiě)入這些日志。作為部署的一部分的其他應(yīng)用程序也可以這樣做鳖眼。因此黑毅,系統(tǒng)日志是一個(gè)了解外部事件的好地方。如果你在Windows上運(yùn)行你的應(yīng)用程序钦讳,這是事件日志矿瘦。在Linux上,您應(yīng)該知道系統(tǒng)日志服務(wù)及其后繼者愿卒。