log4j的正确使用姿势
最近清明节,朋友公司的日志爆了,说控制台打得太满了,出了问题,早上4点多被喊去公司修改代码,他们把所有的日志全部在控制台打印了,结果就。。。我说日志这么做不可取啊,你们打印出来的内容太多啦,控制台没必要打印这么多,log4j配置一下每天生成即可,这样也方便查看查错
其实我们也是简单应用一下而已,大致配置如下
log4j.rootLogger=INFO,console # TODO 发布到阿里云记得添加,另外控制台不输出 #,dailyFile log4j.logger.org.mybatis = DEBUG log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n # 定期滚动日志文件,每天都会生成日志 log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender # TODO 本地日志地址,正式环境请务必切换为阿里云地址 log4j.appender.dailyFile.File=C:/logs/log.log4j #log4j.appender.dailyFile.File=/usr/local/logs/log.log4j log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout log4j.appender.dailyFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n # 订单服务 单独日志记录 ... # 支付服务 单独日志 配置 ...
需要注意的是日志地址在不同的环境下需要切换,在linux上的地址是不同的
而针对细化到类或者包下的日志我们只对订单以及支付做了单独的配置,生成的地址也不同,这样更方便进行排错
另外日志的保存方式有这几种,可以根据所需要的去进行配置
org.apache.log4j.ConsoleAppender(日志在控制台输出)
org.apache.log4j.FileAppender(文件中输出)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件,推荐~)
org.apache.log4j.RollingFileAppender(日志文件输出达到指定大小就会另外产生一个新的文件)
org.apache.log4j.WriterAppender(流形式输出到指定路径)
另外对于支付流水可以使用日志输出到数据库,而我们不需要手动进行保存。若在大并发的时候可以选择nosql数据库,比如mongodb,这样的做法也是不错的;而对于某些报表类功能也可以使用日志的做法,这样统计也十分方便。这些日后抽空再说一下吧~