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)的更多相关文章

  1. Log4j2日志配置详解(1)

    log4j与log4j不同:log4j是通过Logger的静态方法getLogger()获取Logger对象,而log4j2是通过LogManager的静态方法getLogger()获取Logger对 ...

  2. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  3. Log4J日志配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  4. Apache日志配置详解(rotatelogs LogFormat)

    logs/error_logCustomLog logs/access_log common--默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelogs ...

  5. (转)Log4J日志配置详解

    http://www.cnblogs.com/ITtangtang/p/3926665.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源 ...

  6. java Log4j日志配置详解大全

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  7. Spark log4j日志配置详解(转载)

    一.spark job日志介绍    spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...

  8. Log4J日志配置详解[转]

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  9. SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出

    写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...

随机推荐

  1. 数据类型(C++)

    不同系统会有不同差异: 类型 位(byte) 范围 char 1 -128—127 or 0 – 255 unsigned char 1 0 – 255 signed int 1 -128—127 i ...

  2. NSObject和反射2

    NSObject和反射2. commend +R  run id stu=[Student student]; // –>   Student *stu=[Student student]; : ...

  3. JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  4. Navicat Premium 12 卸载和注册表的删除

    卸载就不用我说了,win10也好,win7也好直接windows设置里的卸载,或者你觉得别的软件卸载的比较干净也行 不过还是不会删掉注册表,甚至文件夹都不删除, ... 这是卸载 ,在此说一下,为了安 ...

  5. vue 循环Redio

    标准用法,做个笔记.(图示是elementUI,其他框架大同小异) <el-radio-group @change="changePayHandler" v-model=&q ...

  6. mysql:启动服务时遇到的问题

    1.cmd命令: 在切换路径时,如果要切到另外一个磁盘,比如从C盘切到E盘,命令如下: cd /d 你要切换的路径 2.错误:“服务名无效” 问题原因:mysql服务没有安装.(参考:https:// ...

  7. 关于本电脑qt5.11+vs2017+opencv3.4的配置问题

    本人想用qt5.11+vs2017+opencv3.4开发程序,配置了很久才成功,现在把配置后的环境变量记录一下,以供自己以后参考,同时也供大家参考. qt5.11+vs2017+opencv3.4的 ...

  8. Java日志体系(八)最佳实践

    java常用日志框架关系 Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1. Logback必须配合Slf4j使用.由于Logback和Slf4j是同一个作者,其兼容 ...

  9. mysql中update的low_priority解决并发问题

    在处理访客信息更新是遇到了大并发的问题,low_priority,低优先级,可以让并发没那么占CPU,对于低配VPS来说,作用还是很大的.UPDATE [LOW_PRIORITY] tbl_name ...

  10. .NET下的对称加密算法

    1.关于.NET下的对称加密算法.    .NET Framework类库提供了对称加密.散列函数.非对称加密.数字签名等现有的主流加密算法..NET中默认实现了4种对称加密算法:DES.Triple ...