log4j日志级别

log4j2 学习(一) 概述

邮差的信 提交于 2019-12-02 10:29:42
一、功能 在大型应用中,日志可以帮助定位问题和分析性能,日志组件几乎是大型应用的必备组件。 log4j2是log4j的升级版本。 log4j2可以完成日志输出。可以定制日志输出格式,指定日志输出的目的是文件、控制台、数据库或其他存储媒介。 用log4j输出日志相比较于使用“System.out”的最大优势在于可以指定日志输出级别。 二、特点与优势 API独立 log4j API是一个门面(facade),对于实现了log4j的组件都可以使用log4j API作为其前端。 相比于SELF4j,log4j具有如下优势: log4j不仅支持String还支持 Messages 作为日志输出。 log4j API支持lambda表达式 比SELF4j提供更多的日志方法 除了SELF4j支持的参数日志格式,还是支持事件 log4j提供 LogManager.shutdown() 完全支持Makers,log Levels和 ThreadContext。 更优的性能 在多线程下相比log4j 1.x 和logback提升18倍吞吐量,并且具有更低的延迟。 支持java8的lambda表达式 几乎没有垃圾回收压力 三、相关框架 与log4j相关的框架有self4j、logback,其实后两个与log4j都是竞争关系。 参考: log4j 2.x 官方文档: https://logging

log4j.properties配置及详解

家住魔仙堡 提交于 2019-12-01 22:45:29
log4j.properties文件配置: log4j.rootLogger = debug,console log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.layout = org.apache.log4j.SimpleLayout ①配置根Logger,其语法为 #log4j.rootLogger =[level],appenderName,appenderName2,... #level是日志记录的优先级,分为OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL ##Log4j建议只使用四个级别,优先级从低到高分别是DEBUG,INFO,WARN,ERROR #通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关 #比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来 #appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的 ②配置日志信息输出目的地Appender,其语法为: #log4j.appender.appenderName =fully.qualified.name.of.appender.class #log4j.appender

日志打印建议

风格不统一 提交于 2019-12-01 19:24:56
开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。 但编程活久见,开发久了,总会遇到“这个问题生产环境上能重现,但是没有日志,业务很复杂,不知道哪一步出错了?” 这个时候,怎么办? 还能怎么办,发个版本,就是把所有地方加上日志,没有任何新功能,然后在让用户重现一遍,拿下日志来看,哦,原来是这个问题。 有没有很熟悉的感觉? 还有一种情况,我们系统有3*5=15个节点,出了问题找日志真是痛苦,一个一个机器翻,N分钟后终于找到了,找到了后发现好多相似日志,一个一个排查;日志有了,发现逻辑很复杂,不知道走到那个分支,只能根据逻辑分析,半天过去了,终于找到了原因。。。一个问题定位就过去了2个小时,变更时间过去了一半。。。 所以我对日志的最少有以下2点要求: 能找到那个机器 能找到用户做了什么 针对第一点,我修改了一下nginx的配置文件,让返回头里面返回是那个机器处理的。 nginx的基本配置,大家查阅一下资料就知道。简单配置如下(生产环境比这个完善) 效果如图,返回了处理的节点: 第二点,要知道用户做了什么。用户信息是很重要的一个信息,能帮助海量日志里面能快速找到目标日志。一开始要求开发人员打印的时候带上用户,但是发现这个落地不容易,开发人员打印日志都经常忘记,更加不用说日志上加上用户信息

程序中什么时候打印什么级别的日志

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 16:49:36
日志的打印在软件开发过程中必不可少,一般分为两个大类: 操作日志 系统日志 操作日志,主要针对的是用户,例如在Photoshop软件中会记录自己操作的步骤,便于用户自己查看。 系统日志,主要针对的是软件开发人员(包括测试、维护人员),也就是说这部分的日志用户是看不到的,也就是我们通常所说的debug日志。 在大学中所谓的实践项目或者老师布置的作用中,通常是不会在意日志,除非在作业中有特别的需要,往往在开发过程中直接打印控制台语句来调试程序,这是极为不专业的调试开发过程。所以这也就导致了一个问题,大学毕业和工作时衔接不上最大的问题不在于技术上的难度,而是日志打印的问题。这个看似不起眼的问题对于应届生来说往往是“恶梦”,操作日志相对比较好理解,用户做了什么就记录什么;而打印系统日志则无从下手,往往一般有下面几个方面——3W: Where:不清楚在何处打印日志 Who:不清楚打印什么级别的日志 What:不清楚日志应该包含什么内容 本篇着重讲解系统日志,所以以下“日志”均为“系统日志”的简称。我将针对这几个方面对系统日志的打印做一个简要的总结。另外对Java中常用的日志打印框架(log4j)的几种使用方式做一个示范。 WHERE 1.程序入口   在入口打印日志是因为这个时候传递进来的参数没有经过任何处理,将它打印在日志文件中能一眼就知道程序的原始数据是否符合我们的预期

JAVA 日志系统【 logback]

…衆ロ難τιáo~ 提交于 2019-12-01 13:02:50
Logback浅析 1、 Logback 为取代 log4j 而生 Logback是由 log4j 创始人 Ceki Gülcü 设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。 2、Logback的核心对象:Logger、Appender、Layout Logback主要 建立于 Logger 、 Appender 和 Layout 这三个类之上。 Logger: 日志的记录器,把它关联到应用的对应的 context 上后,主要用于存放日志对象,也可以定义日志类型、级别。Logger对象一般多定义为静态常量,如: 1 package com.logs; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 6 public class MyApp { 7 final static Logger logger = LoggerFactory.getLogger("MyApp.class"); 8 public static void main(String[] args) { 9 10 logger.trace("trace");11 logger.debug("debug str");12 logger

springboot2.0.3配置日志

浪子不回头ぞ 提交于 2019-12-01 02:53:24
原因:SpringBoot默认使用slf4j日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉; 而我今天想引入log4j的时候,pom文件一直报错,显示找不到log4j的jar包,应当是2.0.3的springboot版本的原因; 在此就没再继续引入,而是采用了SpringBoot使用的slf4j的日志,有机会的话再测一下log4j和slf4j两种日志的效率对比。 一、application.yml中配置日志打印级别,默认是info(也可选择不同目录): #slf4j日志配置 logging: # 配置级别 level: #分包配置级别,即不同的目录下可以使用不同的级别 com.sblueice.controller: debug 二、logback.xml中所有配置:   配置打印文件的路径(一天一个,保存30天): <!-- 开发、测试环境 --> <springProfile name="dev,test"> <!-- 定义日志存储的路径,不要配置相对路径 --> <property name="FILE_PATH" value="E:/temp0918/SpringBoot-log/cccf.%d{yyyy-MM-dd}.%i.log" /> </springProfile> 配置打印sql日志:  <logger name="com.sblueice

Log4J的配置文件

人走茶凉 提交于 2019-12-01 01:44:02
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。 1. 配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.rootLogger = [ level ] , appenderName , appenderName1 , … #配置日志信息输出目的地Appender及Appender选项 log4j.appender.appenderName = fully.qualified.name.of.appender.class      log4j.appender.appenderName.option = value1     …      log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局)及格式布局选项 appender.appenderName.layout = fully.log4j.qualified.name.of.layout.class   log4j.appender.appenderName.layout.option1 = value1     …      log4j.appender.appenderName

Spring Boot 默认日志的配置

橙三吉。 提交于 2019-11-30 12:58:11
Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。 格式化日志 默认的日志输出如下: 2016-04-13 08:23:50.120 INFO 37397 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {4.3.11.Final} 输出内容元素具体如下: 时间日期: 精确到毫秒 日志级别: ERROR, WARN, INFO, DEBUG or TRACE 进程ID 分隔符: --- 标识实际日志的开始 线程名: 方括号括起来(可能会截断控制台输出) Logger名: 通常使用源代码的类名 日志内容 控制台输出 在Spring Boot中默认配置了ERROR、WARN和INFO级别的日志输出到控制台。 我们可以通过两种方式切换至DEBUG级别: 在运行命令后加入--debug标志,如:$ java -jar myapp.jar --debug 在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate

log4j

前提是你 提交于 2019-11-30 12:23:39
日志是应用软件中不可缺少的部分,Apache的开源项目 log4j 是一个功能强大的日志组件,提供方便的日志记录。 一、入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下 2、src同级创建并设置log4j.properties ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=E://logs/error.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = E://logs

java日志组件介绍(common-logging,log4j,slf4j,logback)

百般思念 提交于 2019-11-30 04:55:10
common-logging common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着log4j来使用。使用它的好处就是,代码依赖是common-logging而非log4j, 避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。 使用common-logging的常见代码: 1 2 3 4 5 6 import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class A { private static Log logger = LogFactory.getLog(this.getClass()); } 动态查找原理:Log 是一个接口声明。LogFactory 的内部会去装载具体的日志系统,并获得实现该Log 接口的实现类。LogFactory 内部装载日志系统的流程如下: 首先,寻找org