记一次log4j日志文件小事故
最近散仙在做公司的一个跟搜索有关的数据分析项目,主要就是统计搜索的转化率,目的主要有以下几个:
(1)通过数据分析挖掘,找出搜索业务在整个平台系统里的GMV里所占份额
(2)给公司的搜索算法调优,提供可靠的参考依照
(3)了解从搜索入口到最终交易之间各个阶段的数据比重,主要有搜索点击率,搜索曝光率,搜索添加购物车率,搜索下单率,搜索支付率,以及最终的成交金额等
当然还有其他的一些比较细的数据,这里就不细说了,今天,记录一个比较低级的问题,散仙在自己的web项目发现log4j记录的日志文件竟然找不到了,散仙结构图如下:
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.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)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!
记一次log4j日志文件小事故的更多相关文章
- 记一次log4j日志文件输出错误的解决
log4j错误信息:log4j:ERROR Failed to rename [D:/logs/wmts_] to [D:/logs/wmts_2015-12-21.log ]. 起因:部门网站使用B ...
- Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出
1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...
- log4j 日志文件(Day_19)
详细 : https://www.cnblogs.com/liaojie970/p/7634838.html log4j 日志文件 1 log4j.rootLogger=debug,CONSO ...
- log4j日志文件 log4j.xml log4j.properties配置
1,导入log4j jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...
- 【lucene系列学习四】log4j日志文件实现多线程的测试
参考资料:http://nudtgk2000.iteye.com/blog/1716379 首先,在http://www.apache.org/dyn/closer.cgi/logging/log4j ...
- [ log4j ]-日志文件的使用
在java文件中通过 log4j 输出日志信息 1,先引入 log4j-xx.x.jar 包 2,新建一个日志类 PrintLog4j.java: package com.stu.log4j; imp ...
- log4j日志文件路径设置
假设有如下标准化的目录结构: $HOME |-- log |-- conf |-- bin |-- lib |-- data jar包放在lib目录,启动脚本放在bin目录,日志文件放在log目录,配 ...
- java log4j 日志文件
开发中经常会用到log日志文件,根据业务需要可能不产生很大日志文件给维护和[排错带来了麻烦.所以我们希望能够每天或每个月产生一个日志文件,这样文件不至于过大. 或者根据日志文件大小来判断,超过规定大小 ...
- log4j日志文件输出保存
og4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.log log4j.appe ...
随机推荐
- UC浏览器禁止图片阅读模式处理方法
本文转载自:https://www.cnblogs.com/MY0101/p/9969818.html UC浏览器点击图片会出现图片阅读模式. 如何处理? <img style=" w ...
- BCZM : 1.4
书店促销活动,某套书一共有五卷.假设每一卷单独销售均需8欧元,多买则有折扣,具体折扣如下: 2 5% 3 10% 4 20% 5 25% 设计算法,计算出读者购买一批书的 ...
- postman报InvalidArgumentException
解决方案:
- CSIC_716_20191031【计算机的组成】
引言 什么是编程语言 语言是人与人之间的沟通介质之一,编程语言是人与机器(包括计算机)之间沟通的介质. 一个完整的计算机系统主要包括 应用程序 .操作系统 和硬件 等. 计算机三大核心 ...
- 线段树离散化+区间更新——cf1179C好题
绝对是很好的题 把问题转化成当第i个询问的答案是数值x时是否可行 要判断值x是否可行,只要再将问题转化成a数组里>=x的值数量是否严格大于b数组里的>=x的值 那么线段树叶子结点维护对于值 ...
- echart数据的实时更新
- Vue Virtual Dom 和 Diff原理(面试必备) 极简版
我又来了,这是Vue面试三板斧的最后一招,当然也是极其简单了,先说Virtual Dom,来一句概念: 用js来模拟DOM中的节点.传说中的虚拟DOM. 再来一张图: 是不是一下子秒懂 没懂再来一张 ...
- python函数使用易错举例
关于嵌套: 嵌套使用中, retrun inner ---> 返回的是函数的地址 retrun inner() : ---> 运行inner()函数 ---> 运行i ...
- 左神算法进阶班1_5BFPRT算法
在无序数组中找到第k大的数1)分组,每N个数一组,(一般5个一组)2)每组分别进行排序,组间不排序3)将每个组的中位数拿出来,若偶数,则拿上 / 下中位数, 成立一个一个新数组.4)新数组递归调用BF ...
- Django rest framework (视图类详解)
官网:https://www.django-rest-framework.org/api-guide/viewsets/ 在django rest framework 视图中一共有N个类 第一类:AP ...