maven的日志在哪里看_日志管理领域研究现状(2)
從上一篇提到的《軟件學報》上的綜述文章開始,這段時間順著引用又陸續(xù)看了一些日志管理方面的論文。這里摘錄一些論文的數(shù)據(jù)和結(jié)論,還都挺有意思的。
Examining the stability of logging statements?pdfs.semanticscholar.org
分析了activemq、cloudstack等4個著名的apache開源項目。發(fā)現(xiàn):
不過,這篇論文的出發(fā)點,是建立一個分類預測模型,哪些日志代碼后續(xù)不會改的,讓日志分析工具只關(guān)注這些日志的解析處理,減輕運維人員頻繁變更提取規(guī)則的工作量——這個設(shè)想是否成立,我個人持懷疑態(tài)度。
Studying the characteristics of logging practices in mobile apps: a case study on F-Droid?users.encs.concordia.ca
分析了F-Droid平臺上的1444個開源安卓應用代碼,發(fā)現(xiàn):
Studying and detecting log-related issues?das.encs.concordia.ca
分析了HDFS、YARN等大型開源軟件的jira情況,發(fā)現(xiàn):
此外,論文還利用日志文本的香農(nóng)熵等做了一個log checker,給出是否level合適、log合適等建議。
Characterizing logging practices in Java-based open source software projects – a replication study in Apache Software Foundation?www.eecs.yorku.ca
分析了21個java開源程序,也都來自apache基金會。發(fā)現(xiàn)和過去針對C/C++開源程序的論文相比,有一些不同:
Log Clustering based Problem Identification for Online Service Systems?www.microsoft.com
從微軟PB級日志環(huán)境得到的幾個特點總結(jié):
利用日志聚類,在測試環(huán)境得到日志執(zhí)行序列集合,然后和生產(chǎn)環(huán)境的做對比,只關(guān)注有變化的部分,能節(jié)省大概86%~97%的查閱量。2016年的本文,在原先的2013年的方法的基礎(chǔ)上,再加上了Check Recurrence,對已經(jīng)發(fā)生和標記過的故障路徑,可以直接利用。
最后結(jié)果,微軟的一個實例,1kw原始日志,通過關(guān)鍵字搜索命中20w條,通過聚類得到40個序列。
Characterizing and Detecting Anti-patterns in the Logging Code?nemo9cby.github.io
分析activemq、hadoop、maven的源碼,找出不合理的日志代碼。并以此模型工具,向top10的開源項目提交了學習出來的問題,有72%被最終接受了(其中,jEdit作者否決了所有問題,表示別拿你們的工具結(jié)論來打擾我)。
之前多數(shù)分析日志代碼優(yōu)化的,都集中在在what、where to log,本文研究的是how to log。首先要基于how的目的,人工分析日志代碼的變更分類,得到如下總結(jié):
基于這個人工總結(jié),設(shè)計了一個工具做自動分析,能分析源碼中的5類日志代碼bug:
Log2: A Cost-Aware Logging Mechanism for Performance Diagnosis?www.microsoft.com
Log2是微軟做的一個類似logger或者說log4j一樣的庫,解決whether to log問題。不過優(yōu)化的方向只專注在一個場景,就是為了check某個函數(shù)的處理性能,大家經(jīng)常在調(diào)用這個函數(shù)之前寫一行begin日志,之后寫一行end日志。
同樣有性能監(jiān)控目的,文中提及谷歌在2010的Dapper論文中一個數(shù)據(jù):當打開全部日志輸出時,谷歌搜索引擎服務的響應時間增加了16.3%,吞吐量下降了1.48%。
微軟亞研為了這個項目,還提前做了一次內(nèi)部的問卷,其實針對IT運維方向的問卷調(diào)查法還挺有意義的。運維關(guān)注的服務質(zhì)量管理本身就有一部分管理學性質(zhì)(雖然管理學領(lǐng)域的服務質(zhì)量管理偏向純服務業(yè))。
log2的原理其實就是在庫內(nèi)部維護兩層可以動態(tài)調(diào)整的filter。
第一層是針對每個函數(shù)的,根據(jù)歷史數(shù)據(jù)評估這個函數(shù)的end-begin時間大致范圍(主要就是是平均值方差了,這塊量大,要高效),如果新執(zhí)行的情況屬于正常的,其實就可以不記錄日志了。
第二層是總的緩沖隊列,根據(jù)隊列狀況(預定義閾值,比如1s鐘最多刷1KB),決定flush哪些日志到磁盤(使用增強學習算法做打分,判斷隊列里哪些日志對函數(shù)性能影響大,優(yōu)先打哪些),以及給第一層過濾器發(fā)信號開啟過濾。
其實在有eventid/functionname和duration的前提下,即使不用庫,而是ETL方式,應該也可以運用這套原理。
Characterizing the Natural Language Descriptions in Software Logging Statements?pinjiahe.github.io
本文采用自然語言處理技術(shù)研究日志代碼的固定描述文案部分。發(fā)現(xiàn):
DLFinder: Characterizing and Detecting Duplicate Logging Code Smells?petertsehsun.github.io
本文分析了Hadoop、CloudStack、ElasticSearch 和 Cassandra 源碼。專門針對重復日志現(xiàn)象。
話說,ES的日志代碼比例還真是偏少啊。
重復日志現(xiàn)象分為5類:
可以看到,主要就是第3和第5種bug比較多。說白了,就是研發(fā)寫代碼的時候,從別處復制過來,忘了對應改細節(jié)的情況……
總結(jié)
以上是生活随笔為你收集整理的maven的日志在哪里看_日志管理领域研究现状(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux操作系统原理_Linux系统从
- 下一篇: iis worker process内存