最近散仙在作公司的一個跟搜索有關的數據分析項目,主要就是統計搜索的轉化率,目的主要有如下幾個:
(1)經過數據分析挖掘,找出搜索業務在整個平臺系統裏的GMV裏所佔份額
(2)給公司的搜索算法調優,提供可靠的參考依照
(3)瞭解從搜索入口到最終交易之間各個階段的數據比重,主要有搜索點擊率,搜索曝光率,搜索添加購物車率,搜索下單率,搜索支付率,以及最終的成交金額等
固然還有其餘的一些比較細的數據,這裏就不細說了,今天,記錄一個比較低級的問題,散仙在本身的web項目發現log4j記錄的日誌文件居然找不到了,散仙結構圖以下:
log4j.properties的配置文件以下:
java
log4j.rootCategory=INFO,fileout,errorout,stdout 算法
log4j.appender.stdout=org.apache.log4j.ConsoleAppender apache
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n tomcat
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 微信
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender app
log4j.appender.errorout.Threshold=ERROR webapp
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-5p] %m%n ide
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout 測試
log4j.appender.fileout.File=log/info.log
log4j.appender.fileout.Append=true
log4j.appender.fileout.DatePattern='.'yyyy-MM-dd
log4j.appender.errorout=org.apache.log4j.RollingFileAppender
log4j.appender.errorout.File=log/error.log
log4j.appender.errorout.MaxFileSize=100000KB
log4j.appender.errorout.MaxBackupIndex=10
log4j.appender.errorout.Append=true
log4j.appender.errorout.layout=org.apache.log4j.PatternLayout
log4j.appender.errorout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n
程序運行出異常(測試使用)以後,發現這個log目錄裏空空如也,什麼也沒記,後來直接在控制檯運行,發現log卻生效了,比較奇怪,但既然log4j配置了記錄日誌,這功能確定是有的,爲何沒有記錄下我指定的目錄下呢?
後來查資料後,發現散仙犯了一個比較低級的錯誤,web工程裏的日誌記錄路徑和普通的java的日誌記錄路徑是不同的,web工程的日誌是在web容器裏的,普通的工程就在根目錄下,因此散仙在這裏使用MyEclipse啓動Web項目後,實際上是看不到日誌的,由於編譯後的工程是在MyEclipse集成的(本身可指定)tomcat裏的路徑下的,因此直接在MyEclipse下找日誌文件是確定不行的。
知道這個緣由後,散仙就去該項目的根目錄下的log文件夾裏找log文件,結果依舊沒有找到,後來在tomcat的bin目錄下,找到了可愛的log文件夾,真是不容易,我擦,那麼爲何會出如今這裏呢?
由於咱們的tomcat的啓動腳本是在bin目錄下的,而默認也會去把路徑做爲根目錄,因此散仙在上面代碼裏配置的log/xxx.log結果天然而然就進入了該目錄,知道這個緣由後,咱們只須要加上相對路徑配置,即可以解決這個問題,固然也可使用絕對路徑,看本身的業務吧,散仙比較推薦使用相對路徑,由於這樣當咱們下一次切換tomcat的路徑時,咱們不須要再改動路徑,而若是你是絕對路徑,則須要改動路徑才行。
下面看下幾種在web工程裏配置路徑方法:
(1)log4j.appender.file.File=${catalina.home}/webapps/xxx項目路名/log/xxx.log,表明使用${catalina.home}引用當前的tomcat目錄,這個變量無需在咱們的環境變量裏設置。
(2)log4j.appender.file.File=../webapps/xxx項目路名/log/xxx.log
使用相對路徑,這個更簡潔
最終的log4j.properties的配置以下:
log4j.rootCategory=INFO,fileout,errorout,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorout.Threshold=ERROR
log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-5p] %m%n
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
#log4j.appender.errorout.File=${catalina.home}/webapps/DataShow/log/info.log
log4j.appender.fileout.File=../webapps/DataShow/log/info.log
log4j.appender.fileout.Append=true
log4j.appender.fileout.DatePattern='.'yyyy-MM-dd
log4j.appender.errorout=org.apache.log4j.RollingFileAppender
#log4j.appender.errorout.File=${catalina.home}/webapps/DataShow/log/error.log
log4j.appender.errorout.File=../webapps/DataShow/log/error.log
log4j.appender.errorout.MaxFileSize=100000KB
log4j.appender.errorout.MaxBackupIndex=10
log4j.appender.errorout.Append=true
log4j.appender.errorout.layout=org.apache.log4j.PatternLayout
log4j.appender.errorout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n
上面,二種寫法均可以,你們能夠根據本身習慣定義,改爲完成以後,再次測試,發現log4j,終於如願以償的如何咱們的要求了,另外建議你們在配置log4j時,最好把不一樣的log級別給分離開,這樣便於快速定位查找問題,大部分狀況下,咱們只須要2個級別,info和error,固然你能夠定義的更細,根據本身的業務,進行定製!
想了解更多有關電商互聯網公司的搜索技術和大數據技術的使用,請歡迎掃碼關注微信公衆號:我是攻城師(woshigcs)
本公衆號的內容是有關搜索和大數據技術和互聯網等方面內容的分享,也是一個舒適的技術互動交流的小家園,有什麼問題隨時均可以留言,歡迎你們來訪!