• 谈谈我对Log4j2以外的感想


       首先,我想说说我最初对Log4j2态度,可能是我对Log4j2的认识不够深,在刚接触到有关项目运用到Log4j2的配置时,我修改最多的是其配置文件,其实也不过是修改一些路径什么的。至于说在项目开发时去全面配置Log4j的其它内容,目前我到还没有,因为这些核心的配置都事先已被架构师搭建好了,重要的地方我们修改的少之又少。

      今天,我写这篇博文主要是想表达内心的独特认识和体会,由于是内心独白,那么接下来有关log4j的配置只会部分做下简单说明。其实挺恨自己为什么工作了近4年了到现在才发出这样的呐喊?此时,内心在说自己太笨了。其实都怨自己的自学能力太差,不勇于尝试新的东西;在面对困难时,不加思考一味的寻求帮助。

          最近几天,因项目组特殊,需要我根据目前的现状修改下有关Log4j2的配置,条件:A.由原来按照指定文件大小循环生成文件修改为按照指定时间去生成。B.将生成的文件自动备份到指定目录。当时我明白需求,我也明白我对Log42的认识程度,内心在想又一个很难的任务需要自己去克服了。第二个(B)需求其实还是挺容易去实现的,对于第一个(A)需求我从未听说过,感觉会很难的样子。第二天上午一上班就一个劲的baidu啊、google啊、上官网啊 都没有找到想要的答案,网上都是一些关于Log4j2的简单配置,而且还千篇一律,从中还发现一篇文章在不同的地方都有出现。官网上对于以指定时间进行生成的文件最小单位是小时,其在策略中的配置是<TimeBasedTriggeringPolicy modulate="true" interval="1" />,然后我不停的查相关资料,最后还是没有自己想要的按照分钟进行配置的。之后我就感觉可能是实现不了,就直接找到了源码研究了一下,大致看了一下TimeBasedTriggeringPolicy类,该类实现了一个TriggeringPolicy类,并且只是实现了其两个方法,然后我就想自己些一个类去实现TriggeringPolicy类中的函数,将interval="1"按照分钟进行处理,引用自定义的类需要在Configuration标签中用packages="cn.xx.xx"来指定你得类路径,记得名称不要和与原来的TimeBasedTriggeringPolicy类名称一样,因为在加载Log4j2的配置文件时会先找自身的文件,然后在去自定义的类。之后就编写了一个类实现其两个方法,当时测试的工程是普通的一个java project工程,为实现让程序能够不停的运行,于是编写以一个定时的方法,每间隔0.5秒执行一个,这样程序就会不停的运行,日志也就不停的打印到文件,在中间实现能够以分钟去处理文件也花费了挺长时间的。在这里说一下我是先的思路吧,主要是获取系统启动时的启动运行时间和当前时间,比较两时间间隔相差的秒数,比如一分钟执行一次,则秒数间隔为60秒就返回一个reture true的操作,大致就是这个意思,当然了中间也要有严格的处理。比如,运行10秒中程序就没有了业务,然后在1分钟20秒是又有业务了,因为这时的两时间间隔远远大于60秒,针对这样的问题,当时写的程序就没能实现。不过最后还是解决了这样的问题,就是多判断一次,如果获取的时间间隔大于60秒,则将系统启动时间重置为当前时间,然后返回return true的操作,虽然不够非常严谨,但这样基本上就满足了要求。在最后,将自己的方案给项目组解说时,就运行了一下做的效果,要的就是这样的一个效果,但是有牛人认为说Log4j2中应该有这样(按分钟)的说明。然后,她就找到源码跟踪了一下,最后发现Log4j不光有分钟的配置,还有秒、小时、天、月等都是可以配置的,不过Log4j2针对这些配置是需要一个基本的配置项,<RollingRandomAccessFile name="running-log"
                fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">,interval中的值取决于filePatter中定义的时间格式,如果%d{yyyyy-MM-dd HH:mm:ss}则interval="120"则是间隔120秒生成一个日志文件,如果时间格式为%d{yyyyy-MM-dd HH:mm}则interval="2"则是间隔2分钟后生成一个日志文件... ,最后项目组一致认同后者的配置比较可靠,你们可想我当时那种心情——愧疚、伤心、痛恨,中最是让我羡慕,发现自己研究问题的能力太差了,同样是可以实现一个功能,为什么没能仔细、认真的看源码,可能与我当时急躁解决问题的心情有关,当时心中一味这想进快解决问题,根本就没多看源码。不过类似于这样的配置,在官网上并没有详细的说明,哎,以后总之多看文档和源码,我觉得这里面折射出很多做人的道理和解决问题的能力,你不能不佩服比你经验丰富的人... 哎!不说那么多了,我们要站在巨人的肩膀上看待问题,多学习下别人的优点,多去和优秀的人对比下自己,记住并弥补它!

      今天写这篇博客就是以此来提醒自己,做事不能浮躁,要稳下心来对人对事!

  • 相关阅读:
    初识python: 文件下载进度
    初识python 之 爬虫:使用正则表达式爬取“糗事百科
    初识python 之 爬虫:使用正则表达式爬取“古诗文”网页数据
    初识python 之 爬虫:正则表达式
    初识python 之 爬虫:爬取双色球中奖号码信息
    初识python 之 爬虫:BeautifulSoup 的 find、find_all、select 方法
    初识python 之 爬虫:爬取中国天气网数据
    初识python 之 爬虫:爬取豆瓣电影最热评论
    初识python 之 爬虫:爬取某电影网站信息
    初识python 之 爬虫:爬取某网站的壁纸图片
  • 原文地址:https://www.cnblogs.com/weinan2087/p/4610255.html
Copyright © 2020-2023  润新知