log4j2.xml基础学习
来源:互联网 发布:电脑屏幕校准软件 编辑:程序博客网 时间:2024/05/21 11:02
简介
本文主要讲解log4j2的基本使用配置。讲解内容如下
- 无配置文件
- 有配置文件但无配置
- 只配置Appender和Logger
- Layout指定
- 子Logger
- Filter使用
- Property定义与使用
- 环境变量, 系统属性等引用
- Script运用
- 配置分割成多个文件
环境
- java 1.8
- log4j2.9.1
用于输出的java代码
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Main { private static Logger logger = LogManager.getLogger(Main.class); public static void main(String[] args) { logger.fatal("fatal!"); logger.error("error!"); logger.warn("warn!"); logger.info("info!"); logger.debug("debug!"); logger.trace("trace!"); }}
log4j2.xml配置
无配置文件
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging.22:17:59.839 [main] FATAL Main - fatal!22:17:59.844 [main] ERROR Main - error!
- 即使没有配置文件也会输出日志,但第一行会追加输出
ERROR
信息 - 没有配置文件时,默认日志输出设置
- RootLogger使用ConsoleAppender
- ConsoleAppender使用PatternLayout
- pattern为
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
- 日志输出级别为
ERROR
有配置文件但无配置
log4j2.xml<?xml version="1.0" encoding="UTF-8"?><Configuration></Configuration>
日志输出22:25:30.374 [main] FATAL Main - fatal!22:25:30.379 [main] ERROR Main - error!
- Configuration标签中可以使用
status
属性来指定日志的输出级别 - 当有log4j2-test.xml文件时,log4j2.xml会优先载入,当想临时覆盖现有配置时,可以考虑使用。
- 除xml文件形式配置以外,也支持jaon, yaml等文件形式配置。还有老的properties形式
- 优先顺序为properties > yaml > json > xml
只配置Appender和Logger
log4j2.xml<?xml version="1.0" encoding="UTF-8"?><Configuration> <Appenders> <Console name="STDOUT"> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="STDOUT"/> </Root> </Loggers></Configuration>
日志输出fatal!error!warn!info!
- Appenders定义输出目标,输出Layout
- Logger定义日志输出对象,级别,Appender指定。当不指定Appender时,不会报错但也没有任何输出。Appender可以指定多个。
- 通过指定Logger的
level
属性来控制日志输出级别 - ConsoleAppender默认为打印标准输出,如果想打印标准错误输出,可以使用
target="SYSTEM_ERR"
ps.通过输出颜色区分日志分类
Layout指定
log4j2.xml <Console name="STDOUT"> <PatternLayout pattern="%d %p %m%n"/> </Console>
日志输出2017-11-11 22:46:35,244 FATAL fatal!2017-11-11 22:46:35,249 ERROR error!2017-11-11 22:46:35,249 WARN warn!2017-11-11 22:46:35,249 INFO info!
参考:http://logging.apache.org/log4j/2.x/manual/layouts.html子Logger
log4j2.xml <Loggers> <Logger name="Main" additivity="false"> <AppenderRef ref="STDOUT"/> </Logger> <Root> <AppenderRef ref="STDOUT"/> </Root> </Loggers>
日志输出2017-11-11 22:48:13,192 FATAL fatal!2017-11-11 22:48:13,198 ERROR error!
- 子Logger中
name
属性必须配置,值为对应的包名和类名 - 如果指定了不存在的包名,类名时,不会输出错误信息
- RootLogger里不能指定
name
属性值 - 如果子Logger不配置
additivity="false"
时,会导致子Logger输出一遍,RootLogger也输出一遍,导致2重输出。
Filter使用
log4j2.xml <Filters> <RegexFilter regex=".*err.*"/> <TimeFilter start="9:00:00" end="23:00:00"/> </Filters>
日志输出2017-11-11 22:52:59,583 ERROR error!
- 过滤器可以使用在如下节点:
- Configuration
- Logger
- Appender
- AppenderRef
- 过滤器判断时会返回以下3种状态
- ACCEPT 标记为日志输出
- DENY 标记为日志不输出
- NEUTRAL 标记为下一个过滤器判断
- Filters实现多个过滤器,并按顺序执行检查
- 当某过滤器判断结果为
NEUTRAL
时,而下一个过滤器不存在时,标记为ACCEPT
Property定义与使用
log4j2.xml <Properties> <Property name="myPattern">%d %p %m%n</Property> </Properties> <Appenders> <Console name="STDOUT"> <PatternLayout pattern="${myPattern}"/> </Console> </Appenders>
日志输出2017-11-11 22:52:59,583 ERROR error!
- 实现常用数值定义为变量,供调用
环境变量, 系统属性等引用
log4j2.xml <Properties> <Property name="myPattern">${java:os} %d %p %m%n</Property> </Properties>
日志输出Linux 4.10.0-38-generic unknown, architecture: amd64-64 2017-11-11 23:06:06,412 ERROR error!
- log4g2配置可调用环境变量, 系统属性。如${java:os}
Script运用
log4j2.xml <Scripts> <Script name="checkSunday" language="javascript"><![CDATA[ var result; var sunday = 0; var today = new Date(); var dayOfWeek = today.getDay(); if (dayOfWeek == sunday) { result = true; } else { result = false; } result; ]]></Script> </Scripts> <ScriptFilter> <ScriptRef ref="checkSunday"/> </ScriptFilter>
日志输出2017-11-11 23:08:20,000 FATAL fatal!2017-11-11 23:08:20,040 ERROR error!
ScriptFilter
,ScriptPatternSelector
指定要运行的Scriptlanguage
属性支持如nashorn
,Nashorn
,js
,JS
,JavaScript
,javascript,
ECMAScript,
groovy`等
配置分割成多个文件
log4j2.xml<?xml version="1.0" encoding="UTF-8"?><Configuration xmlns:xi="http://www.w3.org/2001/XInclude"> <Loggers> <Root> <AppenderRef ref="STDOUT"/> </Root> </Loggers> <xi:include href="log4j2-appender.xml"/></Configuration>
log4j2-appender.xml<?xml version="1.0" encoding="UTF-8"?><Appenders> <Console name="STDOUT"> <PatternLayout pattern="%d %p %m%n"/> </Console></Appenders>
日志输出2017-11-11 23:14:24,896 FATAL fatal!2017-11-11 23:14:24,901 ERROR error!
参考:http://logging.apache.org/log4j/2.x/manual/configuration.html#XInclude本文涉及源码
https://github.com/cangyan/sample-log4j参考文章
qiita查看原文:https://www.huuinn.com/archives/436
更多技术干货:风匀坊
关注公众号:风匀坊
阅读全文
0 0
- log4j2.xml基础学习
- log4j2配置文件log4j2.xml
- log4j2配置文件log4j2.xml
- log4j2配置文件log4j2.xml
- log4j2.xml
- log4j2.xml
- log4j2.xml
- log4j2配置文件log4j2.xml解析
- 聊一聊log4j2配置文件log4j2.xml
- 聊一聊log4j2配置文件log4j2.xml
- 聊一聊log4j2配置文件log4j2.xml
- 聊一聊log4j2配置文件log4j2.xml
- Log4j2官方文档翻译、学习笔记之一——log4j2基础配置及功能概述
- log4j2.xml实用例子
- Log4j2.xml配置详解
- log4j2.xml配置文件详解
- log4j2.xml的完整
- log4j2 xml配置详解
- [日志]es的增删改查
- SQL语句执行顺序
- Mybatis学习笔记(十九)【mybatis逆向工程】
- Android事件传递机制详解
- Qt中mouseMoveEvent在MainWindow中使用
- log4j2.xml基础学习
- 1021. 个位数统计 (15)
- 6.5
- MySql的覆盖索引
- Cocos Studio 的下载地址找不到
- Fiddler学习博客参考
- java如何增加数组长度
- FPGA三段式状态机的思维陷阱
- 电路作业图