首页 > 编程语言 >log4j 2_程序日志_监控程序运行状态

log4j 2_程序日志_监控程序运行状态

时间:2022-12-27 17:14:09浏览次数:38  
标签:输出 配置文件 程序运行 信息 log4j 日志 logger

2015年5月停止了对于log4j的更新。

log4j 2的配置文件不再支持properties文件格式,推荐使用xml文件配置。

 


 一、日志级别

  fatal:致命错误,在catch块中使用。

  error:异常错误,在catch块中使用。

  warn:警告,在需要警告的地方使用。

  info:信息(方法级别),在调用方法的位置使用。

  debug:调试(代码级别),在方法内部使用。

<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

二、使用步骤

1、导入jar包:

  

2、编写配置文件:

    在CLASSPATH目录(src)下创建配置文件log4j2.xml。

3、通过LogManager.getLogger()获取Logger对象,调用对应方法进行打印。


 

配置文件结构:

<!--根节点,可以设置默认输出级别,自动更新配置文件频率-->
<configuration>

    <!--输出位置-->
    <appenders>
         <console></console>
         <File></File>
         <RollingFile></RollingFile>
    </appenders>

    <!--具体的输出对象-->
    <Loggers>
         <root></root>
         <Logger></Logger>
    </Loggers>

</configuration>        

例子:

        实现了在控制台、指定文件、指定文件夹下输出日志,在文件夹中最多存在5个日志文件,每个文件大小为10mb。

<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration根节点
    status:这个用于设置默认输出的最小级别。
    monitorInterval:自动检测修改配置文件和重新配置的间隔秒数。-->
<configuration status="WARN" monitorInterval="30">
    <!--appenders节点:日志信息输出目的地-->
    <appenders>
        <!--console节点,控制台输出日志:
            name:名字
            target:输出地点-->
        <console name="Console" target="SYSTEM_OUT">
            <!--PatternLayout节点,输出日志的格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </console>

        <!--File节点,输出日志到文件中:
            name:名字
            fileName:输出地址
            append:是否为追加模式-->
        <File name="log" fileName="d:/fileLog.log" append="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--RollingFile节点,输出日志到文件中,可自动新建文件:
            name:名字
            fileName:输出位置
            filePattern:指定新建文件的名称格式。-->
        <RollingFile name="RollingFileInfo" fileName="d:/logs/warn.log"
                     filePattern="d:/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <!--ThresholdFilter节点:设置输出级别
                level:设置基准级别
                onMatch:是否输出基准级别以上的
                onMisMatch:是否输出基准级别以下的-->
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <!--Policies节点,定义新增文件策略-->
            <Policies>
                <!--基于时间的新建策略,默认是1小时新建一个文件-->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!--基于指定大小的新建策略-->
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy节点,设置最大文件数量:
                 max:最大文件数量默认为7,日志数量超过max个会删除之前的日志-->
            <DefaultRolloverStrategy max="5"/>
        </RollingFile>
    </appenders>

    <!--loggers节点,日志对象-->
    <loggers>
        <!--root节点,项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。
            level:默认的最低的输出级别
            -->
        <root level="all">
            <!--appender-ref节点,选择输出位置-->
            <appender-ref ref="Console"/>
            <appender-ref ref="log"/>
            <appender-ref ref="RollingFileInfo"/>
        </root>

        <!--Logger节点,用来指定为某个包或类的日志
                name:指定该Logger所适用的类或者类所在的包全路径。
                level:输出最低级别.
                additivity:默认为true,会与root日志器重复打印。
                -->
        <Logger name="lurenjia.logj4j" level="debug" additivity="false">
            <appender-ref ref="Console"/>
            <appender-ref ref="log"/>
            <appender-ref ref="RollingFileInfo"/>
        </Logger>
    </loggers>
</configuration>
View Code

测试代码:

package lurenjia.logj4j;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @author lurenjia
 * @date 2022/12/24-22:07
 */
public class Client {
    public static void main(String[] args) {
        Logger logger = LogManager.getLogger();
        int i = 0;
        while(true){
            logger.trace("这是第"+i+"次输出trace信息");
            logger.debug("这是第"+i+"次输出debug信息.");
            logger.info("这是第"+i+"次输出info信息.");
            logger.warn("这是第"+i+"次输出warn信息.");
            logger.error("这是第"+i+"次输出error信息.");
            logger.fatal("这是第"+i+"次输出fatal信息");
            i++;
        }
    }
}

运行结果:

  控制台打印了日志信息,指定文件夹下生成了日志文件。

 

标签:输出,配置文件,程序运行,信息,log4j,日志,logger
From: https://www.cnblogs.com/lurenjia-bky/p/17008492.html

相关文章

  • 【转】linux crontab使用及日志查看
     转,原文:https://blog.csdn.net/ximi_xuexi/article/details/122544321---------------------------------------- 命令:crontab-e用于编辑定时任务;定时任务编辑......
  • logback将日志写入到ELK
    springboot中使用logback将日志写入到ELK平台  原文:http://www.tingcream.com/blogArticle/detail/b9ab76ffaeb547388522c9b982e6f419ELK 是由elasticsearch、logst......
  • golang入门项目—日志收集
    传统ELK架构的日志收集:存在的问题:Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。适用于小规模的集群使用。第二种架构:位于各个节点上......
  • 收集日志之一:logstash方式
    部署logstash:Logstash是一个开源的数据收集引擎,基于ruby开发,可以水平伸缩,而且logstash整个ELK当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一......
  • Nlog日志
    第一步:下载Newget包  第二步:新建配置文件 nlog.config(xml文件名字保持一直)<?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.org......
  • 【问题记录】【SpringBoot】【Swagger】启动的时候,有一堆Swagger冲突的日志,看着不爽 G
    1 问题描述swagger版本,启动时候报一堆冲突,虽然没什么影响但是看着不是很爽,以及默认的Swagger主页会有别的Controller信息。<springfox-swagger2.version>2.9.2</s......
  • IIS日志存放目录
    ​用户每打开一次网页,iis都会记录用户IP、访问的网页地址、访问时间、访问状态等信息,这些信息保存在iis日志文件里,方便网站管理员掌握网页被访问情况和iis服务器运行......
  • 【日志框架】SLF4J教程、Log4j漏洞、Logback与log4j比较
    一、参考资料​​SLF4J简介-SLF4J教程™​​​​logback和log4j比较,前者是后者改良,logback配置详解_zbajie001的博客-​​Log4j爆“核弹级”漏洞,Flink、Kafka等至少十多个......
  • MapReduce实战之过滤日志及自定义日志输出路径案例(自定义OutputFormat)
    1)需求      过滤输入的log日志中是否包含atguigu      (1)包含atguigu的网站输出到e:/atguigu.log      (2)不包含atguigu的网站输出到e:/other.log2)输入......
  • 一个简单的c++写日志类
    在开发当中有的直接调试很方便,有的就不太好调试,所以我经常使用写日志以及输出Debug信息来进行开发。尽管我比较喜欢使用以输出Debug的信息的方式来跟踪程序。因为直接一句......