首页 > 其他分享 >og4j2配置

og4j2配置

时间:2024-12-02 12:12:42浏览次数:4  
标签:输出 配置 og4j2 指定 Appender 日志 Root 节点

原文链接:https://blog.csdn.net/qq_35687379/article/details/131649416

 

文章详细介绍了Log4j2的配置,包括缺省配置文件、配置节点说明以及不同类型的Appenders(如Console、File、RollingFile)的用法。

Loggers部分讲解了Root和Logger的日志级别设置。示例展示了如何定义控制台和滚动文件日志输出。

 

og4j2配置
1.缺省默认配置文件 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
   <Appenders>
     <Console name="Console" target="SYSTEM_OUT">
       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
     </Console>
   </Appenders>
   <Loggers>
     <Root level="error">
       <AppenderRef ref="Console"/>
     </Root>
   </Loggers>
</Configuration>

  


2. 配置文件节点说明


2.1 根节点Configuration 参数
status:指定log4j本身打印日志的级别
monitorinterval:用于指定log4j自动重新分配的检测间隔时间,最小间隔5s
2.2 子节点Appenders :输出源,用于定义日志输出的地方
​ log4j2支持的输出源有很多,有控制台Console、文件File、RollingRandomAccessFile、MongoDB、Flume 等

​ 常见子节点:Console、RollingFile、File

2.2.1 Console:用于定义输出到控制台的Appender
name:指定Appender名字
target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT
PatternLayout:输出格式,不设置默认为%m%n
2.2.2 File: 用于定义输出到指定位置的文件的Appender
name: 指定Appender名字
fileName: 指定输出日志的目的文件带全路径的文件名
PatternLayout:输出格式,不设置默认为%m%n
2.2.3 RollingFile: 定义指定方式触发新的Appender
name:指定Appender名字
fileName: 输出日志文件的名字,带全路径
filePattern:归档日志文件的文件名模式
PatternLayout:输出格式,不设置默认为%m%n
Policies: 指定滚动日志的策略
TimeBasedTriggeringPolicy:Policies 子节点,基于时间的滚动策略。interval 属性根据日期模式中最具体的时间单位进行翻转的频率,默认为1。
SizeBasedTriggeringPolicy:Policies 子节点,基于文件大小的滚动策略。size属性用来定义每个日志文件的大小。大小可以以字节为单位指定,后缀为KB,MB或GB,例如20MB。
DefaultRolloverStrategy:用来指定同一文件夹最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。
2.3 子节点Loggers:日志器
​ 常见子节点:Root和Logger

2.3.1 Root: 指定项目的根日志,如果没有单独制定Logger,默认使用该Root日志输出
level:日志的输出级别,共8个级别,按照从低到高为 All < Trace < Debug < Info < Warn < Error < Fatal < OFF。
AppenderRef:Root的子节点,指定该日志输出到哪个Appender。
2.3.2 Logger: 用来单独指定日志的形式
level: 日志的输出级别,和Root的一致
name: 用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点
AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就默认继承自Root.若指定了。那么会在指定的这个Appender和Root的Appnder中都输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。


3.配置模板

   

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

    <!--全局参数-->
    <Properties>
        <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n</Property>
        <Property name="logDir">/data/logs/dust-server</Property>
    </Properties>

    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="console"/>
            <AppenderRef ref="rolling_file"/>
        </Root>
    </Loggers>

    <Appenders>
        <!-- 定义输出到控制台 -->
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <!--控制台只输出level及以上级别的信息-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
        </Console>
        <!-- 同一来源的Appender可以定义多个RollingFile,定义按天存储日志 -->
        <RollingFile name="rolling_file"
                     fileName="${logDir}/dust-server.log"
                     filePattern="${logDir}/dust-server_%d{yyyy-MM-dd}.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <!-- 日志保留策略,配置只保留七天 -->
            <DefaultRolloverStrategy>
                <Delete basePath="${logDir}/" maxDepth="1">
                    <IfFileName glob="dust-server_*.log" />
                    <IfLastModified age="7d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
</Configuration>

  

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:MM:SS.SSS} [%t] %-5level %logger{50} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

  



标签:输出,配置,og4j2,指定,Appender,日志,Root,节点
From: https://www.cnblogs.com/kelelipeng/p/18581578

相关文章

  • 【终端】终端配置、Vim使用相关
    终端设置MobaXterm主题GithubVim设置相关设置显示行号/etc/vimrc是系统范围的初始化配置~/.vimrc个人的vim初始化配置如果没有个人的vim初始化配置:touch~/.vimrcvim~/.vimrc设置好保存退出wq使用相关跳转跳转指定行:100跳转到100行跳转到最开头......
  • 在ensp中华为设备怎么配置静态路由
    1.环境搭建要求:AR1-AR2-AR4为主路由  AR1-AR2-AR4为备路由 主路由优先级为60,备份路由优先级为70 数值越大优先级越低在静态路由里面2.设备配置1.IP地址配置2.配置环回口地址3.静态路由配置在R1上配置去往R2环回口地址和R4的路由在R2上配置去网R1R4......
  • 免费微信多开管理器,多账号配置管理 / 自动登录 - MultiWeChatManager
    分享一款免费微信多开管理器,多账号配置管理「MultiWeChatManager」据介绍核心功能是保存和调用账号配置,实现快速切换和自动登录选定的微信账号。网盘下载https://pan.baidu.com/s/138ZK6w6sC2pZ6UJkGwODZw?pwd=6666夸克网盘分享夸克网盘是夸克推出的一款云服务产品,功能包......
  • ESLint CLI 深度解析:配置选项与高效工作流(5)
    CLI命令行工具关于CLI命令行工具,我们在第一节课的时候就用到过一个:eslint--fix.在官网,我们可以看到CLI命令行工具的基本格式为:eslint[options][file|dir|glob]*我们先来看后面的[file|dir|glob]*,这个部分主要是用来指定ESLint应该检查哪些文件:file:用......
  • YOLOv8配置文件应该如何命名?
    文末有重点1.配置文件解析代码yolov8/ultralytics/nn/tasks.py如下:defyaml_model_load(path):"""LoadaYOLOv8modelfromaYAMLfile."""importrepath=Path(path)ifpath.stemin(f'yolov{d}{x}6'forxin'......
  • 张高兴的 Raspberry Pi AI 开发指南:(一)Hailo-8 配置
    目录摄像头配置AIKit配置测试参考2024年6月,RaspberryPiAIKit发布,将M.2HAT+与Hailo-8AI加速模块捆绑在一起,使RaspberryPi具有了运行AI程序的能力。Hailo-8是由以色列公司Hailo开发的一款高性能边缘AI处理器(NPU),它专为低功耗、高效率的深度学习推理任务设......
  • RuoYi-Vue若依前后端分离版本使用步骤举例简述以及配置代码的说明
    一.功能需求        实现课程管理功能,涵盖增加、删除、修改和查询课程信息的完整前后端代码。二.步骤分析1、准备课程表结构和数据sql文件,导入到数据库中2、登录系统(系统工具->代码生成->导入课程表)3、代码生成列表中找到课程表(可预览、编辑、同步、删除生成......
  • HCIP-10 IS-IS原理与配置
    目录IS-IS的基本概念IS-IS概述NSAPNETNET的配置举例IS-IS和OSPF区域划分的区别IS-IS路由器的分类Level-1路由器Level-2路由器Level-1-2路由器IS-IS支持的网络类型IS-IS开销值IS-IS报文格式IS-IS通用头部详解IS-IS报文类型概述IS-IS常见的TLVIS-IS工作原理邻接关系建立IS-IS邻接关......
  • Seata使用Apollo作为配置中心
    预备工作​当您将apollo-client整合到您的Seata工程之前,请确保后台已经启动Apollo服务。如果您尚且不熟悉Apollo的基本使用的话,可先行参考 Apollo快速入门。建议使用Apollo 1.6.0 及以上的版本。快速上手​Seata融合Apollo配置中心的操作步骤非常简单,大致步骤......
  • DConf —— 应用的动态配置
    我相信大多数开发者在编写应用程序时,都会面临一个基本问题:如何在应用启动时进行配置。我通常使用环境变量(ENVs)来设置一些可以根据运行环境或时间改变的值。然而,这些配置仅在应用启动时生效。如果我们需要更改配置,该怎么办呢?显然,我们需要用新的配置值重启应用。在某些情况下,这样做......