2019独角兽企业重金招聘Python工程师标准>>>

  • 第一步:添加log4j-api、log4j-core的支持
<log4j2.version>2.7</log4j2.version>
<!-- configure logging -->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j2.version}</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j2.version}</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j2.version}</version>
</dependency>
  • 第二步:在resources目录下添加log4j2.xml,打包后,会自动复制到classpath下
<?xml version="1.0" encoding="UTF-8"?>
<!--status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。 -->
<configuration status="WARN" monitorInterval="600"><properties><!-- 配置日志文件输出目录 --><property name="LOG_HOME">D:/logs</property><property name="APPLICATION_FILE_NAME">application</property><property name="ERROR_FILE_NAME">error</property></properties><Appenders><!-- 配置日志文件输出目录 --><Console name="Console" target="SYSTEM_OUT"><!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/><!-- 输出日志的格式 --><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n"/></Console><!--fileName  指定当前日志文件的位置和文件名称   filePattern  指定当发生Rolling时,文件的转移和重命名规则--><RollingRandomAccessFile name="APPLICATION-APPENDER"fileName="${LOG_HOME}/${APPLICATION_FILE_NAME}.log"filePattern="${LOG_HOME}/${APPLICATION_FILE_NAME}.%d{yyyy-MM-dd}-%i.log"><PatternLayout charset="UTF-8"pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n"/><Policies><!--和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-ddHH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-ddHH},最小粒度为小时,则每一个小时生成一个文件。modulate:Indicates whether the interval should be adjusted to cause the next rollover tooccur on the interval boundary.--><TimeBasedTriggeringPolicy interval="1" /><!--指定当文件体积大于size指定的值时,触发Rolling--><SizeBasedTriggeringPolicy size="200 MB"/></Policies><!--指定最多保存的文件数  (指-%i 一个间隔最多文件数)--><!--<DefaultRolloverStrategy max="20"/>--></RollingRandomAccessFile><!--fileName  指定当前日志文件的位置和文件名称   filePattern  指定当发生Rolling时,文件的转移和重命名规则--><RollingRandomAccessFile name="ERROR-APPENDER"fileName="${LOG_HOME}/${ERROR_FILE_NAME}.log"filePattern="${LOG_HOME}/${ERROR_FILE_NAME}.%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout charset="UTF-8"pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n"/><Policies><!--和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-ddHH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-ddHH},最小粒度为小时,则每一个小时生成一个文件。modulate:Indicates whether the interval should be adjusted to cause the next rollover tooccur on the interval boundary.--><TimeBasedTriggeringPolicy interval="1" /><!--指定当文件体积大于size指定的值时,触发Rolling--><SizeBasedTriggeringPolicy size="200 MB"/></Policies><!--指定最多保存的文件数  (指-%i 一个间隔最多文件数)--><!--<DefaultRolloverStrategy max="20"/>--></RollingRandomAccessFile></Appenders><Loggers><!--additivity="false"表示在该logger中输出的日志不会再延伸到父层logger additivity="false"表示在该logger中输出的日志不会再延伸到父层logger日志级别从低到高分为TRACE < DEBUG  < INFO  < WARN  < ERROR  < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。--><!-- 系统全日志 --><Logger name="com.zhaogang" level="DEBUG" additivity="true"><AppenderRef ref="APPLICATION-APPENDER"/><AppenderRef ref="ERROR-APPENDER"/></Logger><Root level="DEBUG"><AppenderRef ref="Console"/></Root></Loggers>
</configuration>
  • 第三步:使用
private static Logger logger = LogManager.getLogger("当前类名即可");logger.info("trace-debug-info-warn-error-fatal");

注意:

<web-app> 2.5 以前要多个依赖 log4j-web,还需要在web.xml配置listener、filter

 Log4j2 不支持 Servlet 2.5以前的WEB应用。

(Servlet 2.5 意思是 web.xml 文件中的 <web-app>  的 version属性值是 2.5 。)

解决方案:升级web-app至3.0  

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

spring默认使用commons logging打日志,会被activiti的桥接工具把日志输入重定向到slf4j

<!-- 桥接:告诉Slf4j使用Log4j2 -->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j2.version}</version>
</dependency>

总结:

1.添加log4j-api、log4j-core的支持

2.在resources目录下添加log4j2.xml,打包后,会自动复制到classpath下

3.private static Logger logger = LogManager.getLogger("exception");

logger.info("trace-debug-info-warn-error-fatal");

Log4j 2 包含了基于LMAX 分离库的下一代的异步日志系统,在多线程环境下,异步日志系统比 Log4j 1.x 和Logback 提高了10倍性能提升(吞吐量和延迟率 )

目前的日志框架有jdk自带的logging,log4j1、log4j2、logback

目前用于实现日志统一的框架apache的commons-loggingslf4j

SLF4J(Simple Logging Facade for Java简单日志门面):

不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在

部署其应用时使用其所希望的日志系统。 提供的核心API是一些接口以及一个LoggerFactory的工厂类。

log4j(log for java):

Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

Logback:

由log4j创始人设计的又一个开源日志组件。当前分成三个模块:

①logback-core(基础模块),

②logback- classic(log4j的一个 改良版本)

③logback-access(logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。)

log4j2:

与log4j1发生了很大的变化,不兼容。log4j1仅仅作为一个实际的日志框架,slf4j、commons-logging作为门面,统一各种日志框架的混乱格局,现在log4j2也想跳出来充当门面了,也想统一大家了。哎,日志格局越来越混乱了。

log4j-api: 作为日志接口层,用于统一底层日志系统

log4j-core : 作为上述日志接口的实现,是一个实际的日志框架

slf4j、jcl、jul、log4j1、log4j2、logback大总结

转载于:https://my.oschina.net/wuweixiang/blog/828538

logging总结 - log4j2使用流程[归档存储]相关推荐

  1. 节省60%费用!巧用阿里云归档存储降低基因测序成本

    原文链接 "如果有款存储产品能在保证业务正常运行的时候节省60%的成本,我会毫不犹豫选择它". 我的工作是做生物基因测序的,我们公司很早就在云上搭建了数据分析平台(云的优势不多说了 ...

  2. 腾讯云深度归档存储类型 让数据从磁带走向云端

    在数字化转型浪潮中,如何存储和利用好数据,是企业面临的首要问题.相比于传统互联网全面拥抱云,产业互联网在数字化转型过程中,通常第一步是利用云存储来归档数据. 随着业务的增长,企业积攒了大量重要数据,一 ...

  3. linux 检查mps版本,linux_mps启动流程_存储相关.doc

    linux_mps启动流程_存储相关 Linux-mips启动流程 -存储相关 linux内核启动的第一个阶段是从 /arch/mips/kernel/head.s文件开始的.而此处正是内核入口函数k ...

  4. UCloud优刻得US3在海量数据归档存储下的成本优化实践,使存储成本再降80%!

    前言 UCloud优刻得在2020年8月正式发布了基于US3的全新一代归档存储产品,该产品采用UCloud优刻得全新自研存储架构,相较标准存储降低近80%存储成本的同时,与市场同类归档存储产品相比降低 ...

  5. 什么是SMR磁盘?解读基于西部数据SMR的归档存储

    Hardy 架构师技术联盟 8月6日,UCloud联合西部数据正式发布新一代归档存储产品,该产品采用UCloud全新自研存储架构和西部数据的高密JBOD机型和SMR(叠瓦式磁记录硬盘)盘.新一代归档存 ...

  6. 阿里云OSS归档/冷归档存储先解冻后下载(解冻收费)

    阿里云对象存储OSS存储桶Bucket存储类型是归档存储或冷归档,存储的Object文件需要先解冻才可以下载,归档存储解冻需要1分钟左右时间,冷归档存储解冻需要1小时左右,解冻后文件可以下载.解冻文件 ...

  7. 单片机断电后静态存储区里面还有数据吗_单片机启动流程和存储架构详解

    最近在给公司的ADAS DCU做内存分配(Memory Allocation),在这儿记录一下相关知识点,也算是给中文社区做贡献了. 目录: 1. ECU启动流程 2. 存储空间解析 3. TC397 ...

  8. HPE增强长期归档存储 转售SpectraLogic高端磁带库

    有意思--闪存爱好者HPE正在推出更大的磁带盒.HPE将扩充高端磁带产品组合,转售SpectraLogic的磁带库. 这次涉及的Spectra产品是T950和TFinity ExaScale Edit ...

  9. Activiti 开始流程时存储发起人员USERID

    2019独角兽企业重金招聘Python工程师标准>>> 转子:https://my.oschina.net/zhuwawa/blog/394653 activiti:initiato ...

最新文章

  1. 【Swift】 GETPOST请求 网络缓存的简单处理
  2. 中国AI已进入迷茫阶段!从技术到科学,AI该何去何从?
  3. qlabel 边加载边更新_盘点十四款国产进口边三轮,挎斗子摩托车,售价从1万至60多万...
  4. The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
  5. 3D物体识别的如果检验
  6. 图的遍历(Java)构造器
  7. [LeetCode][JavaScript]Roman to Integer
  8. uniapp页面传参使用encodeURIComponent转义特殊符号
  9. JAVA类与对象(一)----基础概念理解
  10. UI设计灵感|注册登录界面设计灵感
  11. ValueError: Shapes () and (1, 1) are incompatible
  12. Pascal 基础教程
  13. 微信小程序实现可移动悬浮按钮(超简单)
  14. 5.网络基础-NAT技术
  15. jsp mysql购物网站a_海来福家具商品交易购物网站的设计(JSP,MySQL)(附答辩记录)
  16. Banner(轮播)
  17. 微信小程序——获取步数
  18. Overleaf (LaTex) 使用笔记(自用)
  19. Jupyter notebook显示k线图集合
  20. python打印丘比特之心_Python入门练习

热门文章

  1. memcached 分布式 一致性hash算法demo
  2. AspectJ切入点语法详解
  3. 【Linux 内核】进程管理 task_struct 结构体 ④ ( comm 字段 | 进程优先级字段 | cpus_ptr 字段 | mm、active_mm 字段 | fs 字段 )
  4. 【错误记录】编译 Linux 内核报错 ( /bin/sh: 1: bison: not found )
  5. 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
  6. 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
  7. 【开发环境】Mac 中删除 Python ( 删除 Python 框架 | 删除 Python 应用程序 | 删除 Python 链接 )
  8. 【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )
  9. Linux fork()一个进程内核态的变化
  10. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)