• 日志pattern


    正常项目里面使用log4j2 logback 来打印日志
    最近查看日志平台,发现项目里面配置文件都是互相抄的,尤其是pattern会抄错。
    把logback的语法抄到log4j2里面去,虽然主要内容都在,但是还是挺别扭的

    • log4j2
    
    
    • 1
    • logback
    
    {
     "Level":"%level",
     "Trece":"%X{X-B3-TraceId:-}",
     "Class":"%logger{40}",
     "Message":"%message",
     "Stack_trace":"%exception{10}"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    语法log4j2logback
    日期%d{格式/关键字}{时区}%date、%d
    级别%level
    thread%t或%thread
    类名%c{参数}或%logger{参数}、%C{参数}或%class{参数}c {length }、lo {length }、logger {length }
    方法名%M或%methodM / method
    行号%L
    %l 输出完整的错误位置,如com.future.ourfuture.test.test.App.tt(App.java:13)
    msg%m或%msg或%messagem / msg / message
    换行%n

    log4j2的对齐

    格式是否左对齐最小宽度最大宽度说明
    %20右对齐20右对齐,不足20个字符则在信息前面用空格补足,超过20个字符则保留原信息
    %-20左对齐20左对齐,不足20个字符则在信息后面用空格补足,超过20个字符则保留原信息
    %.30不对齐30如果信息超过30个字符,则只保留最后30个字符
    %20.30右对齐2030右对齐,不足20个字符则在信息前面用空格补足,超过30个字符则只保留最后30个字符
    %-20.30左对齐2030左对齐,不足20个字符则在信息后面用空格补足,超过30个字符则只保留最后30个字

    logback的对齐

    格式日志内容结果
    [%20.20logger]main.Name[ main.Name]
    [%-20.20logger]main.Name[main.Name ]
    [%10.10logger]main.foo.foo.bar.Name[o.bar.Name]
    [%10.-10logger]main.foo.foo.bar.Name[main.foo.f]
    • 日志打印是一个耗费io的行为,所以尽量避免打印超长的内容
    • 不要把文件转成base64,然后aop打印入参日志

    还有人喜欢在网关进行报文的加解密,然后其他人把文件的base64混进来了,然后再打印解密前后的参数,想想一个5M的照片,打印了2次,还解密了一次,内存,cpu,io都被消耗完了。我遇到一个项目账单日的时候总是容器判断gateway死了,重新拉起,就是大量的thread在等待,堵死了健康检查

    • mybatis,redis,mq,eureka心跳等jar包的日志,可以和交易日志分开,不要都混到es里面,实在太多了
    • 日志一般进过filebeat,一些字段可以再filebeat里面添加和过滤
    • 需要对字段进行约定,tomcat的cantia.out、ng的日志,需要约定格式,否则就不要混在一起
    • 格式建议要么时间开头,要么json结构
    • 也可以patern里面自己组个json结构,这样大家都方便
    • 最好搞个traceid,来追踪日志;可以加一个日志的长度的字段
  • 相关阅读:
    Git远程库代码回退
    基础篇——REST风格开发
    【微客云】91优惠话费充值API接口开发功能介绍
    (数据科学学习手札136)Python中基于joblib实现极简并行计算加速
    K8S使用开源CEPH作为后端StorageClass
    在windows和linux服务器之间互传文件
    D. Yarik and Musical Notes Codeforces Round 909 (Div. 3) 1899D
    竞赛 基于深度学习的植物识别算法 - cnn opencv python
    Tomcat实现WebSocket即时通讯 & Java实现WebSocket的两种方式
    【无标题】
  • 原文地址:https://blog.csdn.net/dzl84394/article/details/126440156