log4j日志级别

基于logrotate进行自动化日志切割、日志压缩和周期删除

我只是一个虾纸丫 提交于 2020-02-27 16:09:46
前言 这篇博文以课程课件为蓝本来探讨logrotate和自动化日志处理的一系列课题,细节和深层次原理部分略有删减, 是一篇被课程耽误了的技术博文。 既然谈的很直白,是一篇被课程耽误了的技术博文,如若有打着博客做引导或者拿着开源工具不开源之类的讨伐和道德绑架,恕不回复。 这里是分割线,不废话了,直接切入正文,对课程有兴趣,想深入理解logrotate的朋友可以关注文末课程介绍:) 1.日志切割的概念、必要性和基本思路 1.1 什么是日志切割 日志切割是指当应用或系统的日志文件达到设定的触发条件(如按照一定的时间周期:每天,按照大小:500MB),对其进行切割/分割处理,类似截断处理,把原本容量比较大的日志文件“劫走”转存为另外一个日志文件留存归档,这一刻之后产生的日志,继续输出到文件头被重置为0的日志文件中。 变化的部分 :日志文件的容量(瘦身变小),日志文件的个数(多出一份被切割下的历史日志) 不变的部分 :日志文件名不变 此外,一段时间后,我们还需要删除时间久远的日志文件,整个过程也被俗称为日志滚动(log rotation)。 1.2 为什么要进行日志切割 在线应用(包括操作系统)在长期运行过程中,会产生很多过程日志记录,通常是应用程序记录的一些对系统管理员或者程序开发者有用的信息的文件,诸如正在执行什么、发生了什么错误等一系列信息。 随着日志记录的不断积累,日志文件越来越大

日志写入数据库

╄→гoц情女王★ 提交于 2020-02-26 14:38:11
一、前提条件 系统必须是使用LOG4J进行日志管理,否则方法无效。 系统必须包含commons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号。 二、操作步骤 1、创建日志表 要把日志持久化,必须在数据库中创建一张用来存储日志信息的表,表内字段为日志 的一个主要属性包括:操作类,执行方法,打印时间,日志级别,日志内容。 CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL, CLASS VARCHAR2(200), METHOD VARCHAR2(100), CREATETIME DATE, LOGLEVEL VARCHAR2(50), MSG VARCHAR2(4000)) 因为存储的类为类的全部路径,所以CLASS字段长度需要比较大。 2、日志管理配置 LOG4J主要有两种配置文件.properties和.xml,这里以properties文件为基础来讲 述,关于XML文件的配置,相信大家看完下面的介绍也一样能轻松完成。 通常在LOG4J.PROPERTIES文件的第一行是: log4j.rootLogger= XXX,这句是控制日志的输出,如果想吧日志输出到数据库, 则需要在XXX中添加“DB”,如log4j.rootLogger=INFO,stdout,Platform,db。上面

从Log4j迁移到LogBack的理由

北慕城南 提交于 2020-02-26 05:56:19
英文原文: Reasons to prefer logback over log4j 无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j。牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立。所以如果你已经对log4j很熟悉,你也可以很快上手logback。如果你喜欢使用log4j,你也许会迷上使用logback。 更快的执行速度 基于我们先前在log4j上的工作,logback 重写了内部的实现,在某些特定的场景上面,甚至可以比之前的速度快上10倍。在保证logback的组件更加快速的同时,同时所需的内存更加少。 充分的测试 Logback 历经了几年,数不清小时数的测试。尽管log4j也是测试过的,但是Logback的测试更加充分,跟log4j不在同一个级别。我们认为,这正是人们选择Logback而不是log4j的最重要的原因。人们都希望即使在恶劣的条件下,你的日记框架依然稳定而可靠。 logback-classic 非常自然的实现了SLF4J logback-classic中的登陆类自然的实现了SLF4J。当你使用 logback-classic作为底层实现时,涉及到LF4J日记系统的问题你完全不需要考虑。更进一步来说,由于 logback

java日志系统简介: 从tomcat大量打印debug日志说起

末鹿安然 提交于 2020-02-25 12:12:03
博客搬家至 https://lcy362.github.io/posts/4433/ 目前,java下应用最广泛的日志系统主要就是两个系列: log4j和slf4j+logback 。 其中,slf4j只包含日志的接口,logback只包括日志的具体实现,两者加起来才是一个完整的日志系统。Log4j则同时包含了日志接口和实现。 这两套日志系统之间有可以相互兼容的组件,分别是slf4j-log4j12和 log4j-over-slf4j,引入之后就可以用log4j打出slf4j接口的日志,或者用logback打出log4j接口的日志。 背景知识介绍到这里,再简单说一下标题里提到的问题。问题的现象就是我们在war包里配置了log4j的日志级别为info, 但在catalina里却一直在打大量的debug日志。初看现象肯定很诡异,前期各种研究tomcat配置也没什么头绪。直到磁盘压力太大,去看jstack发现大量进程是等待在Logback代码中,才发现之前关注错了重点。再去具体了解了java下的日志系统后,问题也就很明了了。 先把几个事实摆出来: 1. 打出的debug日志都是用slf4j写的,根据堆栈得知logback具体执行了日志打印 2. logback在无配置文件时默认debug级别 3. 我们的war包中同时包含logback,log4j和slf4j-log4j12 4.

log4j2 日志框架小记

独自空忆成欢 提交于 2020-02-24 21:13:40
这两天开始学习日志框架了, 把常用的学习一下,记录一下。上篇日志写了log4j----- https://www.cnblogs.com/qiaoyutao/p/10995895.html 今天就总结一下log4j2。 错误之处,烦清不吝批评指正。 版权所有,转载注明出处 先来说一下log4j2的特点,根据官方说法,有以下特征。  1. API分离   可以与Log4j实现一起使用,但也可以在其他日志实现(如Logback)之前使用, Log4j2 API与SLF4J相比有几个优点:1。Log4j2 API支持记录 消息 而不只是字符串。 2. Log4j2 API支持lambda表达式。 3. Log4j2 API提供了比SLF4J更多的日志记录方法。 4.除了SLF4J支持的“参数化日志记录”格式之外,Log4j2 API还支持使用java.text.MessageFormat语法以及printf-sytle消息的事件。 5. Log4j2 API提供了LogManager.shutdown()方法。 底层日志记录实现必须实现Terminable接口才能使方法生效。 2. 性能    Log4j 2包含基于LMAX Disruptor库的下一代异步记录器。 在多线程场景中,异步记录器的吞吐量比Log4j 1.x和Logback高18倍,延迟低,Log4j 2明显优于Log4j

log4j2 配置入门

三世轮回 提交于 2020-02-24 21:07:23
(1)根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger). status用来指定log4j本身的打印日志的级别. monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.(如果更改配置文件,不用重启系统) (2)Appenders节点,常见的有三种子节点:Console、RollingFile、File. Console节点用来定义输出到控制台的Appender. name:指定Appender的名字. target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT. PatternLayout:输出格式,不设置默认为:%m%n. File节点用来定义输出到指定位置的文件的Appender. name:指定Appender的名字. fileName:指定输出日志的目的文件带全路径的文件名. PatternLayout:输出格式,不设置默认为:%m%n. RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender. name:指定Appender的名字. fileName:指定输出日志的目的文件带全路径的文件名. PatternLayout

log4j笔记

怎甘沉沦 提交于 2020-02-18 19:14:51
***************************2018年7月1日16:43:18 log4j Log4j笔记: Log4j(log for java)java日志文件 1.是Apache的一个开源项目; 2.是使用Java语言编写的一个日志框架; 03.用于记录程序中的日志信息; 04.可以将日志信息输出到控制台,文件等目的地。 编写 Log文件的作用: 01.记录变量的变化情况,易于我们后期代码维护和调试 02.周期性保存一些数据到文件中,以便于后续使用; 03.可以设置日志信息的级别,便于管理。 Log的日志组成部分 01日志记录器 02日志的输出格式 03日志的输出目的地 Err Warn Info Debug Truce Log4j的输出格式: %p : 日志信息的优先级 %d : 日志的输出时间 比如 %d{yyyy-MM-dd hh:mm:ss} %C : 输出日志信息的全类名 %l : 日志输出的位置,包含类名,线程和日志输出的行号 %m : 日志输出的信息 %M : 日志输入所在的方法 %n : 换行 %r : 从程序启动到输出日志信息,经历的时间(毫秒) %t : 输出日志信息的线程 01.指定日志信息输出到哪个地方 02.可以同时指定多个输出目的地 03.一个输出目的地就是一个Appender ===》一个类 Log4j的使用: 需要引入 jar包

LogBack日志配置

北城余情 提交于 2020-02-17 05:22:33
程序中记录日志一般有两个目的   1、故障定位   2、显示程序运行状态 logback的主要模块   1、logback-access:与server容器集成,提供通过http来访问日志的功能   2、logback-classic:是log4j的改良版本,完整的实现了slf4j api可以很方便的更换其他的日志系统   3、logback-core:为logback-access与logback-classic提供了基础的服务 logback的主要标签   1、logger:日志的记录器,主要用于存放日志对象,定义日志的类型、级别   2、appender:指定日志输出的目的地(控制台、文件、远程套接字服务器等)   3、layout:格式化日志信息的输出 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 3 当scan为true时,配置文件发生改变,将会被重新加载,默认为true; 4 scanPeriod 设置 监测配置文件是否有修改时间的时间间隔,如果没有时间单位,默认时间单位为毫秒,当scan为true时,这个属性就生效; 5 debug 当该属性设置为true时,将会打印出logback内部的日志信息,实时查看logback的运行状态 6 --> 7 <configuration scan = "true"

JAVA中的Log4j

半世苍凉 提交于 2020-02-16 21:32:31
Log4j的简介: 1.如果程序中出现异常我们怎么解决    01 使用异常处理机制==>异常    02 使用debug调试(必须掌握)   03 System.out.Print(); 001.控制台行数有限制 002.影响性能 003 如果我们需要对用户的行为和习惯进行分析!不能解决这个问题 我们需要一个能把记录用户行为和习惯的代码记录到一个文件中 Log4j:(Log for Java) 01.是使用java语言编写的一个日志框架 02.是Apache的一个开源项目 03.记录我们程序中的日志信息 04.将日志信息输出到我们指定的目的地 .log结尾的(日志文件); Log4j的作用: 01.记录代码中变量的变化,用于我们的程序调试和后期维护. 02.可以周期性的保存一些数据,用于后期对数据的分析 03.通过设置日志信息的级别,来便于我们管理 Log4j的组成部分:(日志的记录器(Logger),日志的输出格式(Layout),3.日志的输出目的地(Appender)) 1.日志的记录器(Logger) 日志的输出级别 OFF 级别最高,用于关闭所有的日志输出 ALL 级别最低,用于开启所有的日志输出 ----------------------------------------------------------------------------------

Log4j2日志记录框架的使用教程与简单实例

自作多情 提交于 2020-02-15 08:07:49
1、Log4j2的使用教程 1.1 简介 Log4j的1.x版本虽然已经被广泛使用于很多应用程序中,但由于出现内存泄漏等bug,代码难以维护,以及需要使用老版本的jdk等劣势,在2015年8月已经玩完。它的替代品,SLF4J,Logback,Log4j2对日志框架做了很多必要的改进。 历史上出现了很多的日记框架,如: Log4j: Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。 Log4j2: Apache Log4j 2是apache开发的一款Log4j的升级产品。 Commons Logging: Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。 Slf4j: 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。 Logback: 一套日志组件的实现(Slf4j阵营)。 Jul(Java Util Logging): 自Java1.4以来的官方日志实现。 1.2 安装 在开发中使用Log4j2日志记录框架需要引入的jar包如下: log4j