1、日志相关介绍

  日志接口(slf4j):slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用,比如log4j、logback等日志框架。常用的日志框架有log4j、logback、log4j2,log4j是apache实现的一个开源日志组件;logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现;log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高很多,并解决了一些死锁的bug,而且配置更加简单灵活。以下以log4j2 xml配置文件为例。

2、log4j2.xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<!-- log4j2内部日志配置,status表示日志级别,monitorInterval表示监控间隔 -->
<Configuration status="WARN" monitorInterval="10">
<!-- 属性配置,后续可以使用${xxx}获取对应的值 -->
<properties>
<!-- 日志存放根目录 -->
<property name="LOG_HOME">logs</property>
<!-- 文件名配置 -->
<property name="FILE_NAME">adapter_service_log</property>
</properties>
<!-- 日志附加器配置 -->
<Appenders>
<!-- 控制台输出配置 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制台输出格式结构配置 -->
<!-- https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout -->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- 日志访问文件配置,filePattern表示压缩日志文件的文件名的模式,.gz会自动压缩 -->
<RollingRandomAccessFile name="RollingFile"
fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
<!-- 日志文件格式配置 -->
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
<!-- 策略配置 -->
<Policies>
<!-- 基于时间的触发策略。该策略主要是完成周期性的log文件封存工作。有两个参数:
interval,integer型,指定两次封存动作之间的时间间隔。单位:以日志的命名精度来确定单位,
比如yyyy-MM-dd-HH 单位为小时,yyyy-MM-dd-HH-mm 单位为分钟
modulate,boolean型,说明是否对封存时间进行调制。若modulate=true,
则封存时间将以0点为边界进行偏移计算。比如,modulate=true,interval=4hours,
那么假设上次封存日志的时间为03:00,则下次封存日志的时间为04:00,
之后的封存时间依次为08:00,12:00,16:00-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!-- 基于日志大小的触发策略,最大100MB-->
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<!-- 默认的文件大小处理策略,max表示filePattern配置的%i的最大值,即表示当天文件归档的最大数量 -->
<DefaultRolloverStrategy max="30">
<!-- 删除处理策略,在配置的路径中搜索,maxDepth表示往下搜索的最大深度 -->
<Delete basePath="${LOG_HOME}/$${date:yyyy-MM}/" maxDepth="2">
<!-- 文件名搜索匹配,支持正则 -->
<IfFileName glob="*.log.gz" />
<!-- 最新修改时间超过7d则会被删除 -->
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders> <Loggers>
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>

3、pattern格式

  • %c{参数} 或 %logger{参数} ##输出日志名称
  • %C{参数} 或 %class{参数 ##输出类型
  • %d{参数}{时区te{参数}{时区} ##输出时间
  • %F|%file ##输出文件名
  • highlight{pattern}{style} ##高亮显示
  • %l ##输出错误的完整位置
  • %L ##输出错误行号
  • %m 或 %msg 或 %message ##输出错误信息
  • %M 或 %method ##输出方法名
  • %n ##输出换行符
  • %level{参数1}{参数2}{参数3} ##输出日志的级别
  • %t 或 %thread ##创建logging事件的线程名

  pattern对齐修饰

  • %20 —— 右对齐,不足20个字符则在信息前面用空格补足,超过20个字符则保留原信息
  • %-20 —— 左对齐,不足20个字符则在信息后面用空格补足,超过20个字符则保留原信息
  • %.30 —— 如果信息超过30个字符,则只保留最后30个字符
  • %20.30 —— 右对齐,不足20个字符则在信息前面用空格补足,超过30个字符则只保留最后30个字符
  • %-20.30 —— 左对齐,不足20个字符则在信息后面用空格补足,超过30个字符则只保留最后30个字符

参考:

http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout

log4j2 配置文件解读的更多相关文章

  1. 怎样在idea添加log日志 以及log4j2配置文件解读

    网上找了很多篇文章,就数这篇比较全,从下载到配置都有讲到,解决从0开始接触java日志文件添加的各位同学.参考文章:https://www.cnblogs.com/hong-fithing/p/769 ...

  2. log4j2配置文件解读

    log4j2可以按照开发人员预先的设定,在指定的位置和情况下打印log语句,并且可以酌情关闭某些log语句,如开发阶段debug类型的语句等.并且,可以使用layout来定义输出语句的格式. 使用前需 ...

  3. 聊一聊log4j2配置文件log4j2.xml

    一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...

  4. Log4j2配置文件详解

    目录[-] 1 系列目录 2 默认配置 3 第一个配置例子 4 复杂一点的配置 4.1 Appender之Syslog配置 4.2 Syslog及Syslog-ng相关配置(Fedora) 5 Log ...

  5. 【比赛打分展示双屏管理系统-专业版】Other.ini 配置文件解读以及排行榜界面及专家评语提交展示等具体配置

    第一个问题:Other.ini配置文件的解读: 在软件根目录下,找到Other.ini配置文件,打开如下: 配置文件解读: iOrderIDOrXSID:默认为0,按照软件 选项/排行榜和奖项 的设置 ...

  6. log4j2配置文件log4j2.xml详解(转载)

    此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...

  7. Nginx 小入门记录 之 Nginx 配置文件解读(二)

    上一小节主要是记录一些环境准备和Nginx的安装,接下来对Nginx基本配置进行记录. 查看配置文件安装记录 可以通过以下Linux命令进行查看: rpm -ql nginx rpm 是liunx的包 ...

  8. log4j2配置文件xml详细了解

    log4j2配置文件xml详细了解 详细参考:https://www.cnblogs.com/new-life/p/9246143.html log4j 2.x版本不再支持像1.x中的.propert ...

  9. 从零开始Pytorch-YOLOv3【笔记】(一)配置文件解读

    前言 这是github上的一个项目YOLO_v3_tutorial_from_scratch,它还有相应的blog对其详细的解读.机器之心翻译了他的tutorial:从零开始PyTorch项目:YOL ...

随机推荐

  1. 027 ElasticSearch----全文检索技术02---快速入门

    1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,E ...

  2. char[],char *,string之间转换

    char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char *char str[] = "lala";char *str1 ...

  3. Redis和数据库一致性

    1.实时同步  对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存:      更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期 ...

  4. C# vb .NET读取识别条形码线性条码EAN-13

    EAN-13是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确 ...

  5. nc 从服务器上传下载文件

    1.安装 nc # yum install nc -y 2.下载文件 // 在 45.77.17.128 这台主机监听 9988 端口(注意符号是 "<" ) # nc -l ...

  6. linux环境:FTP服务器搭建

    转载及参考至:https://www.linuxprobe.com/chapter-11.html https://www.cnblogs.com/lxwphp/p/8916664.html 感谢原作 ...

  7. Java自学-数字与字符串 字符串

    Java中的字符串String 示例 1 : 创建字符串 字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象 常见创建字符串手段: 每当有一个字面值出现的时候,虚拟机就会创 ...

  8. Vue--基础2

    目录 Vue--基础2 vue成员获取 分隔符成员 计算属性成员 什么是计算属性 计算属性的用法 注意: 监听属性成员 组件 组件的介绍 组件的优点: 局部组件 全局组件 组件复用的数据隔离 组件之间 ...

  9. AI涉及到数学的一些面试题汇总

    [LeetCode] Maximum Product Subarray的4种解法 leetcode每日解题思路 221 Maximal Square LeetCode:Subsets I II (2) ...

  10. 【robotframework】pycharm+robotframe(转)

    [robotframework]pycharm+robotframe   一.环境搭建 二.框架介绍 1.settings 是这个测试套件的全局配置表 说明这个测试套件要使用的测试库.资源文件 测试套 ...