1. 程式人生 > >開啟log4j的記錄原始碼行號的配置,會對系統性能產生影響!

開啟log4j的記錄原始碼行號的配置,會對系統性能產生影響!

今天看到一篇文章,談Log4j對系統的效能的影響...整理如下:

一般,我們用log4j寫log的時候,很習慣於如下面記錄:

2005-01-11 09:57:57,816 DEBUG (BizProc.java:275) Begin to get connection...
2005-01-11 09:57:57,816 DEBUG (BizProc.java:275)   Obtain connection [email protected]
2005-01-11 09:57:57,816 DEBUG (BizProc.java:275)   Begin transaction [TX_2015_RECV] processing...
2005-01-11 09:57:57,925 DEBUG (BizProc.java:328)     All of the values were:

這裡會把Java Source Code中的行號帶出來,查詢錯誤很方便...

但,這也是問題之所在...文章中介紹,Log4j之所以可以得到行號,是用了JVM的一個特性,不知道大家有沒有注意到,如果我們的Java程式在執行時出現錯誤,會出現下面的資訊:

javax.naming.NamingException: Cannot create resource instance
 at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:189)
 at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301
)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
 at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
 at javax.naming.InitialContext.lookup(InitialContext.java:347)

看到黑體字沒有,原來JVM已經內嵌支援Debug出行號資訊了!可是,這裡是出錯的時候,JVM丟擲的,那為什麼用 log4j.info() 的時候,也可以看到行號呢?

下面就是重點,Log4j中記錄行號的過程...

(1) 呼叫了 log4j.info() 或是log4j.debug()方法...
(2) 建立一個Throwable的物件來取得當前執行堆疊的快照...Throwable.fillInStackTrace();
(3) 從丟擲的Throwable物件中,來分析出當前log資訊的行號...

但是,請注意,建立執行時的堆疊跟蹤,對JVM來說,是一項非常大的開銷!

所以,我們在配置log4j的PatternLayout的時候,如果是要上線到正式環境,一定要記者把引數關掉,
一般來說,用 “%d %-5p  %m%n" 就可以滿足了!


原文請參考這裡:Sneaky, sneaky Log4J

===========================================================================
補遺篇~~~~~!

log4j.rootLogger=info, Console
log4j.logger.net.csdn.blog.xport=debug, RollingFile
log4j.additivity.net.csdn.blog.xport=false

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n

log4j.appender.RollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File=SystemLog.log
log4j.appender.RollingFile.Append=true
log4j.appender.RollingFile.MaxFileSize=2MB
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d %-5p [%t] %C{1} - %m%n

相關推薦

開啟log4j記錄原始碼配置系統性產生影響

今天看到一篇文章,談Log4j對系統的效能的影響...整理如下:一般,我們用log4j寫log的時候,很習慣於如下面記錄:2005-01-11 09:57:57,816 DEBUG (BizProc.java:275) Begin to get connection...2

jqGrid編輯配置方法事件

<html><head><script type="text/javascript"> jQuery(document).ready(function(){    var lastsel2   jQuery("#rowed5").jqGrid({             d

Python全棧教程下載學習實戰+筆記+原始碼+作業視訊教程字串和編碼如何使用操作

字元編碼,我們已經講過了,字串也是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。 如果你覺得看這些理論知識乏味不夠形象,可以進他們的Python技術扣扣裙【278136312】 裙公告裡面 有講的非常詳細的完整版Python入門到實戰+筆記+原始碼+作業視訊教程免費下載,生動的講解可以讓你思 路

全能APP時代:一對一直播視訊聊原始碼+一對多+商城掀起怎樣的“腥風血雨”

從直播pk 到一對一視訊聊,娛樂互動性原創性和個性化相輔相成 從2016年起直播市場風起雲湧,伴隨著一輪輪的市場競爭和淘汰。直播市場正經歷大洗牌,有人不禁要問直播真的迎來寒冬了嗎? 對此作為直播平臺程式開發的小編來說,直播市場越來越多元化;短視訊開始風靡市場更符合當下年輕時尚元素,一對一直播視訊聊也是市場

從Webpack原始碼探究打包流程萌新也看懂~

簡介 上一篇講述瞭如何理解tapable這個鉤子機制,因為這個是webpack程式的靈魂。雖然鉤子機制很靈活,而然卻變成了我們讀懂webpack道路上的阻礙。每當webpack執行起來的時候,我的心態都是佛繫心態,祈禱中間不要出問題,不然找問題都要找半天,還不如不打包。尤其是loader和plugin的執行

重磅Notes Domino v10.0.1本月18釋出還有免費社群版來襲

大家好,才是真好的。今天的內容會很豐滿,因為Domino相關的各個領域的動作實在是太快,讓人眼花繚亂,所以我用了一個驚歎詞“重磅”。今天的內容將分為四個部分: 一、Notes Domino V10.0.1本月18號釋出 如果你有IBM客戶ID號,在今天早上起來的時候,登入一下IBM

javascript+HTMl5遊戲下載開發一個都月薪上萬舅服你

lock itl 五子棋 opera sta 你是 http store 進階學習 HTML5時代已經到來許久了,你是否已經掌握了那麽一點呢?今天小編給大家講講h5的折疊多設備、跨平臺特性, 即用HTML5制作遊戲。相比flash,HTML5更加靈活方便,隨著瀏覽器技術的

架構師提升篇:分布式系統中如何提升系統性

架構師在分布式系統中,平衡業務計算的壓力分布,減少網絡上的數據流動,是一種提升性能的手段,請看下面的例子。1)案例背景某“機械設計研究所”歷史上在管理模式上采用傳統的層次化垂直結構。但是近年來,隨著用戶對產品更新換代的要求越來越快、質量要求越來越高,在競爭日益劇烈、外部壓力日益增大的形勢下,該所在管理模型上重

金立的資金鏈危機中國手機產業造成什麽影響

金立 金立這一段時間真的是流年不利,去年12月就有消息稱因自身原因,導致對歐菲科技形成數億元壞賬。而在今年1月中旬,金立手機董事長劉立榮所持41.4%的公司股權被法院凍結,凍結期2年。隨後在1月底,金立又曝出資金鏈問題,引發供應鏈企業以及金融機構等債權方擠兌,多家上遊供應鏈公司受到影響。劉立榮甚至還忙於尋求×

7月報告Python坐穩編程榜首Java說拜拜了

進入 思維 支持 年度報告 java 教育 tail 有用 microsoft PYPL 發布7月編程語言指數榜PYPL 發布7月編程語言指數榜啦。Python 在今年5月以 22.8% 的份額,首次超越 Java 拿下榜首位置後。時隔2個月月份,7月Python保持持續上

一文看懂用word製作電子公章2分鐘就搞定

現在很多公司的檔案和合同都是必須要加蓋公章才是有效的,有些公司發行檔案上就有公章,其實他們使用word做出來的,如果我們也還學會了,以後製作公章就簡單了!下面將逐一介紹如何製作公章,快來動動你的小手指吧!   步驟一:首先【插入】--【形狀】,選擇橢圓形,然後拖動至合適大小。

session與cookie的區別是什麼?如果客戶端禁用了cookie功能session有什麼影響

cookie 和session 的區別: a、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。 b、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙 考慮到安全應當使用session。 c、session會在一定時間內儲存在伺服

【FRM考試】我國金融風險管理人才緊缺守住系統性風險是底線

近日,全球金融市場出現較大幅度波動,我國股票市場同樣未能倖免,上證指數一度跌至2500點以下,關於大盤觸底的猜測甚囂塵上。 對此,中國銀保監會主席郭樹清接受媒體採訪並作出迴應,他表示,當前我國經濟執行穩中向好的趨勢沒有改變,系統性金融風險完全可控。 他解釋道,近

趁“未老”再認真一次我覺得你更好

每一年的年尾,我都會問自己:這一年,我收穫了什麼?            你呢?                    

如何理解“跳出率”SEO有什麼影響

跳出率是搜尋引擎優化專家,多年以來熱衷討論的話題,特別是在衡量企業網站相關產品轉化率的時候,有著重要的參考價值,但在以往的資料分析中,卻又是經常被SEO人員所忽略的指標。 因此,正確的認知“跳出率”對網站優化顯得格外重要。 那麼,如何理解“跳出率”,它對SEO有什麼影響? 根據

使用jvisualvm監控JAVA程式注意程式效能的影響

      最近在使用阿里的Dubbo【http://code.alibabatech.com/wiki/display/dubbo/Home-zh】做一個實時分析功能,為了提高效能,對程式進行了很多的優化工作,在此過程中JDK中的jvisualvm的確功勞不小,但是也有讓

據說這份高考卷只有程式設計師得滿分

程式猿(ID:imkuqin)  綜合自網路參考:51CTO(id:weixin51cto)、樂

與不同的人在一起有不一樣的人生

在現實生活中,和誰在一起的確很重要 能改變一個人的成長軌跡 甚至決定個人的人生成敗 和什麼樣的人在一起,就會有什麼樣的人生 和勤奮的人在一起,自己不會懶惰 和積極的人在一起,自己不會消沉 與智者同行,會不同凡響 與高人為伍,能登上巔峰 人是惟一能接受暗示的動物

程式設計師這樣面試你的成功率達到 90%

點選上方“CSDN”,選擇“置頂公眾號” 關鍵時刻,第一時間送達! 一、概述 面試,難還是不難?取決於面試者的底蘊(氣場+技能)、心態和認知及溝通技巧。面試其實可以理解為一場聊天和談判,在這過程中有心理、思想上的碰撞和博弈。其實你只需要搞清楚一個邏輯:“面試官為什麼會這樣問?他希望聽到什麼答案

C# pdb類型文件的作用之一:記錄具體異常的關鍵信息如文件路徑和

== pro 問題 height quantity 最新 當前 文件的 anti pdb 是 Program Debug Database 的簡稱; 背景   我負責的一個Services(服務)出問題了,原因是一個 dll 內部邏輯出問題了;   在本地修改源碼後,重新生