log4j2配置

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Log4j2 Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor Table of contents...

Log4j2

Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor


Table of contents

环境搭建

一般java工程:

下载

apache官网给的链接是清华镜像网站的,国外的很多开源的在国内太慢的话不妨尝试一下国内的最大镜像站清华镜像站,下载地址log4j-2.11.0,

配置到环境

To use Log4j 2 in your application make sure that both the API and Core jars are in the application’s classpath. Add the dependencies listed below to your classpath. -----这是官网的原话,翻译过来就是,使用log4j2的方式是,将接口jar和实现jar放到所需项目的classpath中,并添加依赖,具体就是log4j-api-2.11.0.jar和log4j-core-2.11.0.jar

配置文件路径

log4j2.xml可以放在任意的地方,只要你最后把它放到了classpath里,上面的项目中新建一个resources目录用于放置log4j2.xml,如果在未加入classpath时尝试运行时会报如下错误:

ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See <https://logging.apache.org/log4j/2.x/manual/configuration.html> for instructions on how to configure Log4j 2   

大义就是运行的项目没有在classpath 中找到你的配置文件

以Eclipse环境为例,可以在Run—Run Configurations对应项目的Classpath中选择User Entries,点击Advanced,选择Add Folder,把resources文件夹添加进来。

idea环境

熟悉idea的话点击右上方放大镜图标左侧的图标

再点击左侧边栏Project Settings下的Modules

扩展一下,点了之后,右侧边栏区域

表示的是已作为classpath的文件夹,这里可以从已设置为classpath的文件夹中取消选择,

取消掉以后记得按下下方的apply保存一下

选中右侧出现的工程目录中你用来存放配置文件log4j2.xml中的文件夹,点击一下选中,再点击resource,右侧边栏就会多出一下你选中的文件,点下方的apply即可

配置详解

<?xml version="1.0" encoding="UTF-8"?>


<!-- monitorInterval,配置为120,单位为秒。即在服务运行过程中发生了log4j2配置文件的修改,log4j2能够在monitorInterval时间范围重新加载配置,无需重启应用。-->
<Configuration status="WARN" monitorInterval="120">


    <properties>
        <!--当输出到文件中的时候使用LOG_HOME替代输出到的文件夹,类似于配置java环境的时候的JAVA_HOME的做法-->
        <!--最好是填写相对路径,基路径是当前项目也就是src的上一级别-->
        <!--如果写成testlog/mylog,即使没有testlog,也会在src同级目录下新建出testlog文件夹以及其下的mylog文件夹-->
        <property name="LOG_HOME">testlog/mylog</property>
    </properties>

    <!--翻译:附加器,记录方式-->
    <Appenders>

        <!--appenders里的两个属性,分别为name=Console和name=log(两个名字是自己起的)-->
        <!--appenders属性同级的loggers中的root的level的值控制输出信息的严格级别,一般是info-->
        <!--root中的AppenderRef的ref写appenders中的name,在这里也就是添Console或log-->

        <!--name是自己命名的,target=SYSTEM_OUT表示输出到控制台-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--pattern控制格式化输出的格式-->
            <!--例子:在代码中写入logger.info("info级别信息");-->
            <!--输出:12:8:34.501 [main] INFO  com.selton.Log4jTest - info级别信息-->
            <PatternLayout pattern="%d{H:m:s.S} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <!--临时日志生成-->
        <!--<File name="log" fileName="log/test.log" append="true">
            <PatternLayout pattern="%d{H:m:s.S} [%t] %-5level %logger{36} - %msg%n"/>
        </File>-->

        <!--fileName:日志存储路径,
        filePattern:历史日志封存路径。其中%d{yyyyMMddHH}表示了封存历史日志的时间单位(目前单位为小时,yyyy表示年,MM表示月,dd表示天,HH表示小时,mm表示分钟,ss表示秒,SS表示毫秒)。
        注意后缀,log4j2自动识别zip等后缀,表示历史日志需要压缩。-->
        <RollingRandomAccessFile name="File" immediateFlush="true" fileName="${LOG_HOME}/today.log"
                                 filePattern="${LOG_HOME}/history-%d{yyyy-MM-dd}.log">

            <!-- level,表示最低接受的日志级别,配置为INFO,即我们期望打印INFO级别以上的日志。-->
            <!--onMatch,表示当日志事件的日志级别与level一致时,应怎么做。一般为ACCEPT,表示接受。-->
            <!--onMismatch,表示日志事件的日志级别与level不一致时,应怎么做。一般为DENY,表示拒绝。也可以为NEUTRAL表示中立。-->
            <Filters>

                <!--最下方的Root level="debug",如果不设置这句的话,4个级别信息都会打印,设置后,就会只打印INFO以及之上-->
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>

            <!--输出到文件夹中去-->
            <PatternLayout pattern="%d{y-M-d H:m:s.S} [%t] %-5level %logger{36} - %msg%n" />
            <!--<HTMLLayout pattern="%d{y-M-d H:m:s.S} [%t] %-5level %logger{36} - %msg%n" />-->

            <!--必配项,TriggeringPolicy(触发策略) -->
            <Policies>
                <!--按天,划分日志文件-->
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>

            <!--必配项,RolloverStrategy(覆盖策略)-->
            <!--<DefaultRolloverStrategy max="20"/>-->
        </RollingRandomAccessFile>

    </Appenders>

    <Loggers>
        <Root level="debug">
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>

</Configuration>
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
12天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
119 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
38 1
|
1月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
130 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
3月前
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
47 6
|
3月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
33 4
|
3月前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
3月前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中