日志打印规范

1、【必须】应用中不可以直接使用日志系统(Log4j,Logback)中的API,而应该依赖使用日志框架中SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一
2、【必须】应用中的扩展日志(如打点、临时监控,访问日志等)命名方式:appName_logType_logName.log。logType:日志类型如stats/monitor/access等等;logName:日志描述,这种命名的好处是知道此文件属于什么应用,什么类型,做什么用的,利于归类查找
重点: 对日志进行分类存放,如将错误日志和业务日常日志分开存放,便于开发人员查看,也便于通过日志对系统及时监控
3、【必须】日志在输出时,字符串变量之间的拼接使用占位符方式:因为String字符串的拼接会使用StringBuilder的append()方式,有一定的性能损耗。使用占位符仅是进行替换动作,可以有效提升性能如: log.info("do ths job,the name={}",tom)
4、【必须】对trace/debug/info级别的日志输出,必须进行日志级别的开关判断 原因: 虽然在debug(参数)的方法体内第一行代码isDisabled(level.DEBUG_INT)为真时(SLF4J的常见实现Log4J和Logback)就直接return,但是参数可能会进行字符串的拼接运算。此外,如果debug(getName())这种参数由getName()方法调用,方法浪费的开销。如if(logger.isDebuggerEable){logger.debug("Id is:{},name is{}",id,getName()) }
5、【必须】避免重复打印日志,浪费磁盘空间,务必在日志文件中设置additivity=false,如:<logger name=com.taotao.dubbo.config" additivity=false>
6、【必须】生产环境禁止直接使用System.out或者System.err输出日志,或者使用e.printStackTrace()打印异常堆栈信息 原因: 标准日志输出和标准错误日志输出文件,每次Jboss启动的时候才滚动,若大量输出到这两个文件,会导致文件大小超过操作系统限制大小
7、【必须】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不进行处理,那么通过关键字throws向上抛出,如logger.error("params:{}, err={}",params.toString(),e.getMessage,e)
8、【必须】日志打印时,禁止直接使用JSON工具将对象转换成String输出。原因: 如果对象中的某个get方法被覆写,存在抛出异常的情况,则可能打印日志的时候影响正常的业务流程。如:打印日志时候,仅仅打印业务相关的业务相关属性日志或者调用对象的toString()方法
9、【必须】谨慎的记录日志。生产环境禁止输出debug日志,有选择的输出info日志;如果用warn来记录刚上线的业务行为信息,一定要注意日志输出量的问题,避免磁盘打满,及时删除这些观察日志
10、【推荐】可以使用warn日志级别来记录用户输入参数错误的情况,避免用户投诉时,跟踪和处理。非必要,不记录error日志。避免告警
11、【必须】敏感信息打印需要进行脱敏或者加密处理

安全在日志云用于搜索的查询语句,用于检查

手机号:
/13[0-9]{9}/ OR /14[5-9][0-9]{8}/ OR /15[0-35-9][0-9]{8}/ OR /16[2567][0-9]{8}/ OR /17[0-8][0-9]{8}/ OR /18[0-9]{9}/ OR /19[0-35-9])[0-9]{8}/

身份证号
(/[1-9][0-9]{5}19[0-9]{2}0[1-9][0-2][1-9][0-9]{3}[0-9Xx]/ OR /[1-9][0-9]{5}19[0-9]{2}1[0-2][0-2][1-9][0-9]{3}[0-9Xx]/ OR /[1-9][0-9]{5}19[0-9]{2}0[1-9]3[0-1][0-9]{3}[0-9Xx]/ OR /[1-9][0-9]{5}19[0-9]{2}1[0-2][0-2][1-9][0-9]{3}[0-9Xx]/)

12、【必须】日志格式输出包括时间、reqestId,日志级别,线程名,类方法,msg,
13、【必须】tomat或者jetty的acc日志打印,在打印搁置里面,%{userName}%为自定义的请求头,用户发送请求的时候必须将userId设计到请求头中

//tomcat
#打开ACC
server.tomcat.accesslog.enabled=true
#日记路径 生产/测试环境 配置在日记路径 ${pafa.log.home} ,开发请配置本地路径
server.tomcat.accesslog.directory=${pafa.log.home:d:/logs}
#日志格式
server.tomcat.accesslog.pattern=%{yyyy-MM-dd HH:mm:ss}t %{username}i %D %B %a %A %s %m %t %U %S %{X-Forwarded-For}i %{cookie}i %{host}i %{referer}i %{content-length}i %{origin}i %{user-agent}i
#前缀,视情况而定
server.tomcat.accesslog.prefix=${spring.application.name}.access-log
#后缀
server.tomcat.accesslog.suffix=.acc

//jetty
server.jetty.accesslog.enabled=true
server.jetty.accesslog.filename=${pafa.log.home}/accesslog.acc
server.jetty.accesslog.file-date-format=yyyy-MM-dd HH:mm:ss
server.jetty.accesslog.custom-format=%{yyyy-MM-dd HH:mm:ss}t %{username}i %D %{client}a %a %s %m %t %U %S %{X-Forwarded-For}i %{cookie}i %{host}i %{referer}i %{content-length}i %{origin}i %{user-agent}i
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值