最近散仙在作公司的一个跟搜索有关的数据分析项目,主要就是统计搜索的转化率,目的主要有如下几个:
(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)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个舒适的技术互动交流的小家园,有什么问题随时均可以留言,欢迎你们来访!