技术标签: java slf4j log 注解 xml logging log4j log4j2
个人能力有限,仅供个人记录与大家思路参考,难免有错误或不当之处,如发现错误之处请指出,谢谢!
日志共有8个级别(优先级从高到低,优先级越高表示过滤的log信息越多,显示的log信息越少):
级别名称 | 含义 | 级别 |
OFF | 关闭日志输出 | 最高 |
FATAL | 输出FATAL及以上级别日志(FATAL) | |
ERROR | 输出ERROR及以上级别日志(FATAL、ERROR) | |
WARN | 输出WARN及以上级别日志(FATAL、ERROR、WARN) | |
INFO | 输出INFO及以上级别日志(FATAL、ERROR、WARN、INFO) | |
DEBUG | 输出DEBUG 以上级别日志(FATAL、ERROR、WARN、INFO、DEBUG) | |
TRACE | 输出TRACE以上级别日志(FATAL、ERROR、WARN、INFO、DEBUG、TRACE) | |
ALL | 输出所有类型日志(ALL、FATAL、ERROR、WARN、INFO、DEBUG、TRACE) | 最低 |
Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。 日志记录器(Logger)的行为是分等级的:
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。:
static Level DEBUG | 指出细粒度信息事件对调试应用程序是非常有帮助的。 |
static Level INFO | 表明 消息在粗粒度级别上突出强调应用程序的运行过程。 |
static Level WARN | WARN level表明会出现潜在错误的情形。 |
static Level ERROR | ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。 |
static Level FATAL | FATAL level指出每个严重的错误事件将会导致应用程序的退出。 |
另外,还有两个可用的特别的日志记录级别:
static Level OFF | 最高等级,用于关闭所有日志记录。 |
static Level ALL | 最低等级,用于打开所有日志记录。 |
log配置文件主要包含三个节点:Logger、Appender、Layout。
Logger | 配置打印日志的级别,输出日志的程序范围,以及关联的Appender |
Appender | 配置日志的输出形式,输出策略等 |
Layout | 配置每条日志的内容格式 |
配置log4j.properties文件,示例:
#配置根节点
log4j.rootLogger=INFO,Log4jConsole,Log4jFile
#log不向上层传递
log4j.additivity.org.appache=false
#设置变量,保存路径 ${catalina.home}/logs
logDir=D:/tomcat/logs
#控制台输出
log4j.appender.Log4jConsole=org.apache.log4j.ConsoleAppender
log4j.appender.Log4jConsole.Threshold=INFO
log4j.appender.Log4jConsole.ImmediateFlush=true
log4j.appender.Log4jConsole.Target=System.out
#输出格式
log4j.appender.Log4jConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.Log4jConsole.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c:%M:%L] %m%n
#文件输出
log4j.appender.Log4jFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Log4jFile.Threshold=INFO
log4j.appender.Log4jFile.ImmediateFlush=true
log4j.appender.Log4jFile.Append=true
log4j.appender.Log4jFile.File=${logDir}/log4j.log
log4j.appender.Log4jFile.DatePattern='.'yyyy-MM-dd
#输出格式
log4j.appender.Log4jFile.layout=org.apache.log4j.PatternLayout
log4j.appender.Log4jFile.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c:%M:%L] %m%n
一. 属性详解:onMatch和onMismatch都有三个属性值,分别为ACCEPT(接受)、DENY(拒绝)和NEUTRAL(中立)
onMatch="ACCEPT"匹配该级别及以下级别;
onMatch="DENY"不匹配该级别及以下级别;
onMatch="NEUTRAL" 该级别及以下的,由下一个filter处理,如果当前是最高级别,则表示匹配该级别及以下
onMismatch="ACCEPT" 匹配该级别以上级别;
onMismatch="DENY" 不匹配该级别以上的级别;
onMismatch="NEUTRAL" 该级别及以上的,由下一个filter处理,如果当前是最低级别,则不匹配该级别以上的
1. 匹配低于或等于xxx的级别
<ThresholdFilter level="xxx" onMatch="ACCEPT" onMismatch="DENY"/>
2.匹配高于xxx的级别
<ThresholdFilter level="xxx" onMatch="DENY" onMismatch="ACCEPT"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
文章浏览阅读1k次。http://www.csdn.net/article/2015-04-15/2824477-android-performance/1摘要:Google在Udacity上的《Android性能优化》在线课程详细介绍了该如何优化性能,这些课程是Google之前在Youtube上发布的Android性能优化典范专题课程的细化与补充。本文是对渲染、运算、内存、电量四个篇章的学习笔记。_intro and recap timestamps
文章浏览阅读2k次。事务:之前了解到的是,转账(一个帐户上都加、一个帐户上进行减)行级事务(要保存一条insert\update不会出现只插入一部分的情况)实时:查询速度快,响应速度快。在企业里面,一个请求发送出去,如果不是太复杂的话,在做需求的时候,整个响应过程一般不会超过3SOLTP:一般指的是数据库OLAP:重点在于分析上,用于查询或者分析使用。没有实时要求一般是按天、周、月、年来进行数据统计。OLTP是要求实..._hive 使用场景
文章浏览阅读3.4k次,点赞2次,收藏27次。Asp.net核心技术思想 1、概述反射和序列化反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet_asp.net标签必须是小写吗
文章浏览阅读960次。uikit里有一个函数是UIImageWriteToSavedPhotosAlbum可以实现_iphone file文件放入album
文章浏览阅读1.2k次。Arm-A 体系架构安全特性总结:安全特性 英文拼写 说明 应对的攻击 引入的版本 XN execute never 不可执行。一般用于配置数据段不可执行,防止数据段注入可执行的shell code。 使用XN可执行DEP(Data execute Prevention,一般我们通常说的堆栈不可执行) 任意地址读写、代码段覆盖 < v8 PXN Privileged Execute Never 特权模式不可执..._arm sel2技术
文章浏览阅读9.8k次。数据模型(Data Model)是2113数据特征的5261抽象。数据(Data)是描述事物的符号记录,模型(4102Model)是现实世界的抽象。数据1653模型从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型所描述的内容有三部分:数据结构、数据操作和数据约束。扩展资料:数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。1、数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型_什么是数据模型
文章浏览阅读2.4k次,点赞2次,收藏5次。在本系列第一篇中,我们分析了 WebRTC-Android 相机采集的实现,本文中我们将分析预览的实现。有过一定相机开发经验的朋友可能会疑惑,预览还有什么好分析的,不是直接 camera.setPreviewDisplay 或者 camera.setPreviewTexture 就能在 SurfaceView/TextureView上预览了吗?实际上预览还有更高级的玩法,尤其是需要加上图像处理功能..._surfaceviewrenderer
文章浏览阅读2.7k次,点赞28次,收藏88次。tools.hpp源.cpp_easyx制作打牌
文章浏览阅读2.6w次,点赞54次,收藏349次。如何快速学习VR开发,以及HTCvive的使用。_unity vr
文章浏览阅读188次。1、dpi是什么?2、dp和px转换3、适配策略(宽度百分比,高度长宽比)_android dpi适配
文章浏览阅读1w次,点赞5次,收藏8次。从Gitee上拉取前端项目,导入vue时遇到问题时分析过程_此文件夹缺少 'node_modules'。请安装依赖后再尝试导入。
文章浏览阅读9.1k次,点赞8次,收藏31次。傅立叶变换能将时域信号转换为由sin函数为基底的频域信号,从而我们可以从信号中提取出频率信息或截断频谱简化信号压缩信息。计算机难以处理连续信号。DFT是一种适用于计算机处理的有限信号时频转换方法。DFT用一句话概括,就是将连续信号(频域也是连续函数)经过时域采样(这样会使信号的频域发生周期延拓,得到周期连续的函数,计算机无法处理),再经过频域采样(这样会使时域信号发生周期延拓,时域周期延拓这一步可..._桑德图基