日志记录—项目日志处理方案

来源:互联网 发布:大数据运维管理 编辑:程序博客网 时间:2024/05/16 01:14

前台日志处理方案

(记录学习 )
商城项目日志工具使用的是,sl4j+log4j,使用slf4j可方便以后切换成其他日志工具,点击查看sl4j的资料。

一、现在项目的日志管理现状

1、 日志工具没有统一起来,有些地方实例化log4j实例,可有些却是sl4j实例。
2、 在业务层代码,有些try..catch捕获了异常,有些没有捕获。
3、 在controller代码上,常常由于service层及以上没有捕获异常而将异常抛出,controller也没有进行处理,此时会有框架将异常抛出,往往造成不可预料的结果或者不友好的页面。
4、 Log4j原有配置,只有业务层日志配置和根日志,业务层日志按类别分为支付日志、o2o日志(商城主日志)、以及八大中心各自日志,每个都是按天回滚类型,级别都设置为debug(即使是生产环境)。
注:(1)级别没有控制好,非主要业务应该只记录error。重要业务记录info以上。
(2)业务日志,感觉用按天回滚不太合适。考虑用按大小回滚,由于文件太大不方便下载到本地和在服务器查看,定义每个日志文件的最大上限。
(3)八大中心的8个日志废弃,改为中台接口调用日志info级别。业务层日志分为业务主日志、购物车日志、订单日志、支付和退款日志。
5、 没有spring、hibernate日志。

二、考虑日志方案

1、日志类别定义

2 用户层级日志:用户登陆、退出、注册和绑定手机邮箱验证码
2 业务层级日志:购物车、订单、支付、退款和中台接口调用
2 系统层级日志:指代码中未捕获而由spring框架抛出的异常日志(controller),用spring3以上版本提供的@ControllerAdvice进行拦截以及异常捕获处理。
2 框架层级日志:SpringMVC框架日志以及hibernate日志(包括查询sql、ddl、hql参数以及异常捕获)

2、日志记录方向

text、mysql、email
用户层级日志,记录到mysql。考虑到用户行为分析。
订单、支付、退款、注册短信验证码,error级别日志,走email。
其他日志都记录到text。

3、日志记录格式

%d %5p [%t] %c(%F:%M:%L) - %m%n
时间 级别 日志名 文件名 类名 方法名 行数 日志信息

4、系统层级异常

包括controller抛出的异常和前台找不到资源的404。
(1)controller抛出异常,可通过@ControllerAdvice捕获并处理。

(2)找不到资源404,通过配置web.xml。跳转预设页面。

5、日志配置文件如下:

根日志

log4j.rootLogger=info,file,console

Console 根日志控制台

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.Threshold=info
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

file 根日志文本 按天回滚

log4j.logger.file=info,file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=${webapp.root}/WEB-INF/logs/tclshop.log
log4j.appender.file.DatePattern=’.’yyyy-MM-dd’.log’
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

用户日志

log4j.logger.user_logger=info, userlog
log4j.appender.userlog=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.userlog.URL=jdbc:mysql://10.120.99.174/tclshop_yh?useUnicode=true&characterEncoding=UTF-8
log4j.appender.userlog.driver=com.mysql.jdbc.Driver
log4j.appender.userlog.user=root
log4j.appender.userlog.password=tclshop_2015
log4j.appender.userlog.sql=INSERT INTO log4j_user_log (log_date, log_name, log_priority, log_class,log_line,log_method,log_message,log_trace) VALUES (‘%d’, ‘%c’, ‘%p’,’%F’,’%L’,’%M’,’%m’,’%l’)
log4j.appender.userlog.layout=org.apache.log4j.PatternLayout

业务日志

logger for cart

log4j.logger.cart_logger=error,cart
log4j.appender.cart=org.apache.log4j.RollingFileAppender
log4j.appender.cart.Append=true
log4j.appender.cart.file=${webapp.root}/WEB-INF/logs/cart_logger.log
log4j.appender.cart.MaxFileSize=10MB
log4j.appender.cart.MaxBackupIndex=50
log4j.appender.cart.layout=org.apache.log4j.PatternLayout
log4j.appender.cart.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

logger for order

log4j.logger.order_logger=info,order
log4j.appender.order=org.apache.log4j.RollingFileAppender
log4j.appender.order.Append=true
log4j.appender.order.file=${webapp.root}/WEB-INF/logs/order_logger.log
log4j.appender.order.MaxFileSize=10MB
log4j.appender.order.MaxBackupIndex=50
log4j.appender.order.layout=org.apache.log4j.PatternLayout
log4j.appender.order.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

logger for PAY

log4j.logger.pay_logger=info,PAY
log4j.appender.PAY=org.apache.log4j.RollingFileAppender
log4j.appender.PAY.Append=true
log4j.appender.PAY.file=${webapp.root}/WEB-INF/logs/pay_logger.log
log4j.appender.PAY.MaxFileSize=10MB
log4j.appender.PAY.MaxBackupIndex=50
log4j.appender.PAY.layout=org.apache.log4j.PatternLayout
log4j.appender.PAY.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

logger for refund

log4j.logger.refund_logger=info,refund
log4j.appender.refund=org.apache.log4j.RollingFileAppender
log4j.appender.refund.Append=true
log4j.appender.refund.file=${webapp.root}/WEB-INF/logs/refund_logger.log
log4j.appender.refund.MaxFileSize=10MB
log4j.appender.refund.MaxBackupIndex=50
log4j.appender.refund.layout=org.apache.log4j.PatternLayout
log4j.appender.refund.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

logger for interfacecall_logger

log4j.logger.interfacecall_logger=info,interfacecall
log4j.appender.interfacecall=org.apache.log4j.RollingFileAppender
log4j.appender.interfacecall.Append=true
log4j.appender.interfacecall.file=${webapp.root}/WEB-INF/logs/interfacecall_logger.log
log4j.appender.interfacecall.MaxFileSize=10MB
log4j.appender.interfacecall.MaxBackupIndex=50
log4j.appender.interfacecall.layout=org.apache.log4j.PatternLayout
log4j.appender.interfacecall.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

系统日志

logger for uncatch

log4j.logger.uncatch_logger=error,uncatch_logger
log4j.appender.uncatch_logger=org.apache.log4j.RollingFileAppender
log4j.appender.uncatch_logger.Append=true
log4j.appender.uncatch_logger.file=${webapp.root}/WEB-INF/logs/uncatch_logger.log
log4j.appender.uncatch_logger.MaxFileSize=10MB
log4j.appender.uncatch_logger.MaxBackupIndex=50
log4j.appender.uncatch_logger.layout=org.apache.log4j.PatternLayout
log4j.appender.uncatch_logger.layout.ConversionPattern=%d %5p [%t] %c(%F:%M:%L) - %m%n

框架日志

logger for spring

log4j.logger.org.springframework=info,springframework
log4j.appender.springframework=org.apache.log4j.RollingFileAppender
log4j.appender.springframework.Append=false
log4j.appender.springframework.File=${webapp.root}/WEB-INF/logs/spring.log
log4j.appender.springframework.MaxFileSize=10MB
log4j.appender.springframework.MaxBackupIndex=50
log4j.appender.springframework.layout=org.apache.log4j.PatternLayout
log4j.appender.springframework.layout.ConversionPattern=%d %5p [%t] %c(%F:%L) - %m%n

logger for hibernate

log4j.logger.org.hibernate=info,hibernate

hql解析语法树

log4j.logger.org.hibernate.hql.ast.AST=info

sql及参数打印

log4j.logger.org.hibernate.SQL=trace
log4j.logger.org.hibernate.type=trace

above two configs

log4j.logger.org.hibernate.tool.hbm2ddl=info
log4j.logger.org.hibernate.hql=info
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.transaction=info
log4j.logger.org.hibernate.jdbc=info
log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

log4j.appender.hibernate=org.apache.log4j.RollingFileAppender
log4j.appender.hibernate.Append=false
log4j.appender.hibernate.File=${webapp.root}/WEB-INF/logs/hibernate.log
log4j.appender.hibernate.Encoding=utf8
log4j.appender.hibernate.MaxFileSize=10MB
log4j.appender.hibernate.MaxBackupIndex=50
log4j.appender.hibernate.layout=org.apache.log4j.PatternLayout
log4j.appender.hibernate.layout.ConversionPattern=%d %5p [%t] %c(%F:%L) - %m%n

通用日志(输出到数据库和Email)

记录到数据库

log4j.logger.logToDb=ERROR, logToDb
log4j.appender.logToDb=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logToDb.URL=jdbc:mysql://10.120.99.174/tclshop_yh?useUnicode=true&characterEncoding=UTF-8
log4j.appender.logToDb.driver=com.mysql.jdbc.Driver
log4j.appender.logToDb.user=root
log4j.appender.logToDb.password=tclshop_2015
log4j.appender.logToDb.sql=INSERT INTO log4j_log (log_date, log_name, log_priority, log_class,log_line,log_method,log_message,log_trace) VALUES (‘%d’, ‘%c’, ‘%p’,’%F’,’%L’,’%M’,’%m’,’%l’)
log4j.appender.logToDb.layout=org.apache.log4j.PatternLayout

记录到邮件

log4j.logger.logToMail=ERROR, logToMail
log4j.appender.logToMail=com.aebiz.b2b2c.baseframework.log4j.SMTPExtAppender
log4j.appender.logToMail.SMTPAuth=true

日志达到这个大小,就发送邮件(KB)

log4j.appender.logToMail.BufferSize=10
log4j.appender.logToMail.Subject=Log4J Message
log4j.appender.logToMail.To= ljq@kuyumall.com
log4j.appender.logToMail.layout=org.apache.log4j.PatternLayout
log4j.appender.logToMail.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n

0 0
原创粉丝点击