Log4j2日志配置详解(2)
Log4j2日志配置系列之2
1.Configuration
在应用程序代码中插入日志请求需要相当多的计划和工作。观察显示,大约4%的代码用于日志记录。因此,即使是中等大小的应用程序也会在其代码中嵌入数千条日志语句。考虑到日志语句的数量,管理这些日志语句而不需要手动修改它们就变得非常必要。
log4j 2的配置可以通过以下4种方式之一完成:
1.通过xml、json、yaml或properties格式编写的配置文件。
2.以编程方式,通过创建配置工厂和配置实现。
3.以编程方式,通过调用配置接口中公开的api将组件添加到默认配置中。
4.以编程方式,通过调用内部记录器类上的方法。
本页主要关注通过配置文件配置log4j。有关以编程方式配置log4j的信息可以在扩展log4j 2和编程log4j配置中找到。
注意,与log4j 1.x不同,公共log4j 2 api不公开以任何方式添加、修改或删除追加器和过滤器或操作配置的方法。
1.Automatic Configuration
log4j能够在初始化期间自动配置自己。当log4j启动时,它将定位所有的ConfigurationFactory插件,并按从高到低的加权顺序排列它们。在交付时,log4j包含四个ConfigurationFactory实现:一个用于json,一个用于yaml,一个用于properties,一个用于xml。
1.log4j将检查“log4j.configuration File”系统属性,如果设置了,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。
2.如果未设置系统属性,则属性配置工厂将在类路径中查找log4j2-test.properties。
3.如果没有找到这样的文件,yaml configurationfactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
4.如果找不到这样的文件,json配置工厂将在类路径中查找log4j2-test.json或log4j2-test.jsn。
5.如果找不到这样的文件,XML配置工厂将在类路径中查找log4j2-test.xml。
6.如果找不到测试文件,properties configurationfactory将在类路径上查找log4j2.properties。
7.如果找不到属性文件,yaml configurationfactory将在类路径上查找log4j2.yaml或log4j2.yml。
8.如果找不到yaml文件,json配置工厂将在类路径上查找log4j2.json或log4j2.jsn。
9.如果找不到JSON文件,XML配置工厂将尝试在类路径上找到log4j2.xml。
10.如果找不到配置文件,将使用DefaultConfiguration。这将导致日志输出转到控制台。
例如,一个名为myapp的使用log4j的示例应用程序可以用来说明这是如何实现的。
import com.foo.Bar; // Import log4j classes.
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager; public class MyApp { // Define a static logger variable so that it references the
// Logger instance named "MyApp".
private static final Logger logger = LogManager.getLogger(MyApp.class); public static void main(final String... args) { // Set up a simple configuration that logs on the console. logger.trace("Entering application.");
Bar bar = new Bar();
if (!bar.doIt()) {
logger.error("Didn't do it.");
}
logger.trace("Exiting application.");
}
}
MyApp首先导入log4j相关类。然后,它定义了一个名为myapp的静态记录器变量,该变量恰好是类的完全限定名。
MyApp 使用packagecom.foo中定义的Bar类。
package com.foo;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager; public class Bar {
static final Logger logger = LogManager.getLogger(Bar.class.getName()); public boolean doIt() {
logger.entry();
logger.error("Did it again!");
return logger.exit(false);
}
}
如果log4j找不到配置文件,它将提供默认配置。default configuration类中提供的默认配置将设置:
连接到根记录器的控制台挂起程序。
已设置为附加到控制台应用程序的模式%d{hh:mm:ss.sss}[%t]-5级%logger{36}-%msg%n”的PatternLayout
注意,默认情况下,log4j将根记录器分配给level.error。
myapp的输出类似于:
17:13:01.540 [main] ERROR com.foo.Bar - Did it again!
17:13:01.540 [main] ERROR MyApp - Didn't do it.
Log4j2日志配置详解(2)的更多相关文章
- Log4j2日志配置详解(1)
log4j与log4j不同:log4j是通过Logger的静态方法getLogger()获取Logger对象,而log4j2是通过LogManager的静态方法getLogger()获取Logger对 ...
- SpringBoot—整合log4j2入门和log4j2.xml配置详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Apache日志配置详解(rotatelogs LogFormat)
logs/error_logCustomLog logs/access_log common--默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelogs ...
- (转)Log4J日志配置详解
http://www.cnblogs.com/ITtangtang/p/3926665.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源 ...
- java Log4j日志配置详解大全
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- Log4J日志配置详解[转]
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出
写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...
随机推荐
- CentOS7部署tomcat
首先检查是否安装了jdk,然后再查看是否配置了JAVA_HOME 配置JAVA_HOME的方法: 我的是jdk已经安装好了是1.8 我需要找到它的安装目录 [root@bogon xwg]# java ...
- 深度学习笔记(十三)YOLO V3 (Tensorflow)
[代码剖析] 推荐阅读! SSD 学习笔记 之前看了一遍 YOLO V3 的论文,写的挺有意思的,尴尬的是,我这鱼的记忆,看完就忘了 于是只能借助于代码,再看一遍细节了. 源码目录总览 tens ...
- 泛目录程序(莲花泛目录程序/黑帽SEO/寄生虫/莲花泛目录解析/泛目录软件)
莲花泛目录程序强大之处: 1.内容分类详细2.自动推送URL链接3.内置超强原创内容功能系统,页面深受百度搜索引擎喜爱.4.蜘蛛触发繁殖:蜘蛛触发程序任何页面,程序自动生成独立页面并引导繁殖.5.操作 ...
- Ioc容器与laravel服务容器初探
一.Ioc容器 某天,小J心血来潮,决定建造一艘星舰,这艘星舰要搭载"与众不同最时尚,开火肯定棒"的电磁炮.于是他写了一个星舰类: class ElectromagneticGun ...
- docker下的images 保存和导出
由于迁移测试环境,所以部署的的docker镜像某一些需要迁移到另外一台服务器上面去.. 我是用 docker save -o registry.tar registry 来把相应需要导出的images ...
- 图书管理(单链表C++)
#include<iostream> #include<string> #include<iomanip> #include<fstream> usin ...
- MAC ADDRESS
可以使用手机Wifi或蓝牙的MAC地址作为设备标识,但是并不推荐这么做,原因有以下两点:硬件限制:并不是所有的设备都有Wifi和蓝牙硬件,硬件不存在自然也就得不到这一信息.获取的限制:如果Wifi没有 ...
- python 普通继承方式和super继承方式
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递. 举一个很常见的例子: >> ...
- LeetCode 328. 奇偶链表(Odd Even Linked List)
题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O ...
- docker 用nginx 部署 node应用
1.查询镜像 # 1.查询镜像. docker search nginx 2.拉取指定的镜像 # 2.拉取指定的镜像 docker pull nginx 3.下载完成后终端查看 # 3.下载完成后终 ...