`
qindongliang1922
  • 浏览: 2187902 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117630
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126035
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59985
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71374
社区版块
存档分类
最新评论

记一次log4j日志文件小事故

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
















  • 大小: 8.5 KB
3
0
分享到:
评论

相关推荐

    log4j日志配置以及配置文件详解

    这是log4j框架的配置文件,使用Java Properties格式,用于定义日志输出的行为。主要包括以下几个核心部分: 1. **Logger**: 定义日志级别,例如DEBUG、INFO、WARN、ERROR和FATAL。日志级别决定了哪些信息会被记录。...

    springMVC 日志配置 限制log4j 输出文件大小

    实际项目中经常会用到日志打印 为避免日志打印输出文件过大 消耗服务器内存 需要限制大小

    log4j日志文件

    - `log4j.appender.filelog.File=your file dir`:指定日志文件的位置。 - `log4j.appender.filelog.MaxFileSize=your filesize`:设定单个文件的最大大小。 - `log4j.appender.mylog.MaxBackupIndex=num`:设置...

    log4j 写多个日志文件,按照日期每天都记

    2. **使用DailyRollingFileAppender**:`DailyRollingFileAppender`是`log4j`提供的一种特殊Appender,它可以按照指定的时间间隔(通常是每天)滚动生成新的日志文件。我们可以通过以下配置设置每日滚动: ```...

    log4j日志文件乱码解决方法

    本文将详细讨论如何解决Log4j日志文件出现的乱码问题。 首先,我们要理解Log4j的工作原理。Log4j允许开发者自定义日志输出的方式,包括输出到控制台、文件、数据库等。它使用了`QuietWriter`类来写入日志,`...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    log4j 根据日期和文件大小切分日志

    由公司的项目需要根据日期和文件大小切分log4j日志,所以实现来该appender。本人测试通过,并且在公司的其它项目中已有线上使用,暂时还没发现问题。本人代码有写得不好或者错误的地方,欢迎大家指正,谢谢!!!

    tomcat下的log4j日志配置

    5. **重启 Tomcat**:重启 Tomcat 后,相应的日志文件将按照 `log4j.properties` 文件中的设置生成。 **优点**:灵活性高,可以针对每个应用定制化日志配置;便于管理和追踪。 **总结**:根据项目的需求选择合适的...

    log4j使用与java中log4j记录日志如何写入数据库

    1. **配置文件**:Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,它定义了日志的级别(如DEBUG、INFO、WARN、ERROR、FATAL)、输出目的地(控制台、文件、数据库等)以及布局格式。 2. **日志类**:在...

    tomcat6.0 配log4j日志的必须文件及配置过程

    tomcat6.0 配log4j日志的必须文件及配置过程 tomcat6-------lib | |--------tomcat-juli-adapters.jar | |--------log4j.jar | |--------log4j.properites | |----bin |--------tomcat-juli.jar 最后把log4...

    tomcat下用Log4j 按文件大小,生成catalina.out日志文件

    在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...

    tomcat8更换log4j记录日志

    2. 如果Tomcat中已经包含了其他日志库,可能需要将Log4j的JAR文件(如`log4j.jar`)添加到`lib`目录,以确保优先使用Log4j。 3. 在Tomcat的`web.xml`配置文件中,可能需要配置一个`ContextLoaderListener`,以确保在...

    logstash 采集log4j日志配置文件

    logstash采集log4j日志发送到es配置文件,可以把日志根据日志级别区分开,一个级别一条日志是es中的一条数据

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    log4j多文件输出打印

    Log4j是Apache提供的一款强大的日志处理框架,它灵活且功能强大,广泛应用于各种Java项目中。本话题将深入探讨如何使用Log4j实现多文件输出打印,以及自定义日志的配置。 首先,我们要理解Log4j的基本工作原理。Log...

    log4j中配置日志文件相对路径方法(PDF)

    ### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...

    log4j.CustomLogAppender 限制log4j文件保存天数

    每天生成一个log4j日志文件,如果只需要将最近一段时间内的日志文件保留,以前或更早的文件不用保留。例如只保留最近一周的日志,日志文件保留3天等等这些。。。通过这个jar包就可以实现。 log4j.properties文件在...

    配置好log4j的eclipse简单工程,每天输出到一个日志文件中,该文件名为:“XXX_年月日时分.log”的形式

    在IT行业中,日志记录是系统调试、性能分析和故障排查的重要工具,而Log4j则是Java编程语言中广泛使用的日志框架之一。本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名...

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志等

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能

    mybatis,log4j打印日志到后台和文件

    Log4j 是一个广泛使用的日志记录工具,能够帮助开发者跟踪应用程序运行过程中的信息、警告、错误等事件。本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** ...

Global site tag (gtag.js) - Google Analytics