最近散仙在做公司的一个跟搜索有关的数据分析项目,主要就是统计搜索的转化率,目的主要有以下几个: 
(1)通过数据分析挖掘,找出搜索业务在整个平台系统里的GMV里所占份额 
(2)给公司的搜索算法调优,提供可靠的参考依照 
(3)了解从搜索入口到最终交易之间各个阶段的数据比重,主要有搜索点击率,搜索曝光率,搜索添加购物车率,搜索下单率,搜索支付率,以及最终的成交金额等

当然还有其他的一些比较细的数据,这里就不细说了,今天,记录一个比较低级的问题,散仙在自己的web项目发现log4j记录的日志文件竟然找不到了,散仙结构图如下:

 
log4j.properties的配置文件如下:

  1. log4j.rootCategory=INFO,fileout,errorout,stdout
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
  6. log4j.appender.errorout.Threshold=ERROR
  7. log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-5p] %m%n
  8. log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.fileout.File=log/info.log
  10. log4j.appender.fileout.Append=true
  11. log4j.appender.fileout.DatePattern='.'yyyy-MM-dd
  12. log4j.appender.errorout=org.apache.log4j.RollingFileAppender
  13. log4j.appender.errorout.File=log/error.log
  14. log4j.appender.errorout.MaxFileSize=100000KB
  15. log4j.appender.errorout.MaxBackupIndex=10
  16. log4j.appender.errorout.Append=true
  17. log4j.appender.errorout.layout=org.apache.log4j.PatternLayout
  18. 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的配置如下:

  1. log4j.rootCategory=INFO,fileout,errorout,stdout
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
  6. log4j.appender.errorout.Threshold=ERROR
  7. log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-5p] %m%n
  8. log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
  9. #log4j.appender.errorout.File=${catalina.home}/webapps/DataShow/log/info.log
  10. log4j.appender.fileout.File=../webapps/DataShow/log/info.log
  11. log4j.appender.fileout.Append=true
  12. log4j.appender.fileout.DatePattern='.'yyyy-MM-dd
  13. log4j.appender.errorout=org.apache.log4j.RollingFileAppender
  14. #log4j.appender.errorout.File=${catalina.home}/webapps/DataShow/log/error.log
  15. log4j.appender.errorout.File=../webapps/DataShow/log/error.log
  16. log4j.appender.errorout.MaxFileSize=100000KB
  17. log4j.appender.errorout.MaxBackupIndex=10
  18. log4j.appender.errorout.Append=true
  19. log4j.appender.errorout.layout=org.apache.log4j.PatternLayout
  20. log4j.appender.errorout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS}[%-30F\:%-5p\:%l] %m%n

上面,二种写法都可以,大家可以根据自己习惯定义,改成完成之后,再次测试,发现log4j,终于如愿以偿的如何我们的要求了,另外建议大家在配置log4j时,最好把不同的log级别给分离开,这样便于快速定位查找问题,大部分情况下,我们只需要2个级别,info和error,当然你可以定义的更细,根据自己的业务,进行定制!


想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs) 
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!


记一次log4j日志文件小事故的更多相关文章

  1. 记一次log4j日志文件输出错误的解决

    log4j错误信息:log4j:ERROR Failed to rename [D:/logs/wmts_] to [D:/logs/wmts_2015-12-21.log ]. 起因:部门网站使用B ...

  2. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  3. log4j 日志文件(Day_19)

    详细  :   https://www.cnblogs.com/liaojie970/p/7634838.html log4j  日志文件 1 log4j.rootLogger=debug,CONSO ...

  4. log4j日志文件 log4j.xml log4j.properties配置

    1,导入log4j  jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...

  5. 【lucene系列学习四】log4j日志文件实现多线程的测试

    参考资料:http://nudtgk2000.iteye.com/blog/1716379 首先,在http://www.apache.org/dyn/closer.cgi/logging/log4j ...

  6. [ log4j ]-日志文件的使用

    在java文件中通过 log4j 输出日志信息 1,先引入 log4j-xx.x.jar 包 2,新建一个日志类 PrintLog4j.java: package com.stu.log4j; imp ...

  7. log4j日志文件路径设置

    假设有如下标准化的目录结构: $HOME |-- log |-- conf |-- bin |-- lib |-- data jar包放在lib目录,启动脚本放在bin目录,日志文件放在log目录,配 ...

  8. java log4j 日志文件

    开发中经常会用到log日志文件,根据业务需要可能不产生很大日志文件给维护和[排错带来了麻烦.所以我们希望能够每天或每个月产生一个日志文件,这样文件不至于过大. 或者根据日志文件大小来判断,超过规定大小 ...

  9. log4j日志文件输出保存

    og4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.log log4j.appe ...

随机推荐

  1. 数据库MySQL--连接查询

    例子文件1:https://files.cnblogs.com/files/Vera-y/myemployees.zip 例子文件2:https://files-cdn.cnblogs.com/fil ...

  2. Yii2 中使用ts

    在运行环境 vagrant Ubuntu box 中安装 sass ,typescript等 安装需要的软件: sudo su -c "gem install sass" # 可选 ...

  3. 使用CompletionService批处理任务(线程池阻塞线程)

    CompletionService ExecutorService BlockingQueueFuture 如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果.为此你可以保存与 ...

  4. input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题

    监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 但是在很多情况下,只需要输入到输入框的中文字符. 解决办法: 通过查阅资料得知在 ...

  5. 0914CSP-S模拟测试赛后总结

    9-16 16:03-upd:T3数据出锅,老师重测了,于是更了榜单. 名次并没有变化,但是和大佬们的差距变大了. 还是自己实力不行啊.最起码T3不是特别难想吧. 继续努力吧. 粘个榜:%%%二营长. ...

  6. Java 对系统信号的通知获取

    主要介绍Java 如何对系统信号通知进行获取和处理.直接上demo @SuppressWarnings("restriction")public class Test1 imple ...

  7. BZOJ 1911 (APIO 2010) 特别行动队

    题目描述 你有一支由n名预备役士兵组成的部队,士兵从1到n编号,要将他们拆分成若干特别行动队调入战场.出于默契考虑,同一支特别行动队中队员的编号应该连续,即为形如(i,i+1,-,i+k)的序列. 编 ...

  8. echarts renderItem-在区间段内展示连续数据

    一.需求背景: 贴图说明:要求数据在不同类型的区间段内展示. 二.实现思路及代码 实现方法: 利用echarts的自定义配置:option.series[i].type='custom'中的rende ...

  9. POJ-2253-Frogger-/Floyd-Warshall/

    Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...

  10. 万恶之源-python介绍

    PATH OF PYTHON (生命短暂,我要学pythonヾ(◍°∇°◍)ノ゙) 一.Python介绍: 简史:Python诞生于1989年的圣诞节, 创始人为Guido van Rossum, 又 ...