log4j——log4j.xml简单配置样例说明

godtrue godtrue     2022-08-23     773

关键词:

一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述

 

二:老规矩,先来个栗子,然后再聊聊感受

(1)这里栗子有一点特别呀!给出了包名唉!想必有用,是的,配置文件中要特别说明一下的

package test.log4j.test8;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * Created by godtrue
 */
public class UseLog4j {
    //日志记录器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
    //程序入口——主函数
    public static void main(String[]args) {
        //读取使用Java的特性文件编写的配置文件
        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );
        //输出日志信息,测试日志级别的作用(配置在配置文件中),仅仅输出大于等于目前有效级别的日志信息
        LOGGER.debug("[1]-my level is DEBUG 天");
        LOGGER.info("[2]-my level is INFO");
        LOGGER.warn("[3]-my level is WARN");
        LOGGER.error("[4]-my level is ERROR");
    }
}

(2)这段代码和(1)除了类名多了一个 _ ,并没有什么区别,那有什么用那?恩,有用的,一切为了测试,不信,你自己试试就更清楚了

package test.log4j.test8;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * Created by godtrue
 */
public class UseLog4j_ {
    //日志记录器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j_.class);
    //程序入口——主函数
    public static void main(String[]args) {
        //读取使用Java的特性文件编写的配置文件
        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );
        //输出日志信息,测试日志级别的作用(配置在配置文件中),仅仅输出大于等于目前有效级别的日志信息
        LOGGER.debug("[1]-my level is DEBUG 天");
        LOGGER.info("[2]-my level is INFO");
        LOGGER.warn("[3]-my level is WARN");
        LOGGER.error("[4]-my level is ERROR");
    }
}

(3)如下的配置文件,仅列出了三种文件输出目的地的配置,他们相对比较常用,其中值得特别注意的是记录器的 name 和 additivity 这两个属性的作用,详情往下看注解,最好自己试试

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

    <!-- 将日志信息输出到控制台 -->
    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <!-- 设置日志输出的样式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 设置日志输出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
        <!--过滤器设置输出的级别-->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 设置日志输出的最小级别 -->
            <param name="levelMin" value="WARN" />
            <!-- 设置日志输出的最大级别 -->
            <param name="levelMax" value="ERROR" />
            <!-- 设置日志输出的xxx,默认是false -->
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <!-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 -->
    <appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender">
        <!-- 设置日志信息输出文件全路径名 -->
        <param name="File" value="D:/log4j/RollingFileAppender.log" />
        <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
        <param name="Append" value="true" />
        <!-- 设置保存备份回滚日志的最大个数 -->
        <param name="MaxBackupIndex" value="10" />
        <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
        <param name="MaxFileSize" value="10KB" />
        <!-- 设置日志输出的样式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 设置日志输出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
    </appender>

    <!-- 将日志信息输出到文件,可以配置多久产生一个新的日志信息文件 -->
    <appender name="DailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置日志信息输出文件全路径名 -->
        <param name="File" value="D:/log4j/DailyRollingFileAppender.log" />
        <!-- 设置日志每分钟回滚一次,即产生一个新的日志文件 -->
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" />
        <!-- 设置日志输出的样式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 设置日志输出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
    </appender>


    <!--
     注意:
     1:当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
     2:logger中的name非常重要,它代表记录器的包的形式,有一定的包含关系,试验表明
        2-1:当定义的logger的name同名时,只有最后的那一个才能正确的打印日志
        2-2:当对应的logger含有包含关系时,比如:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,则2-1的情况是一样的
2-3:logger的name表示所有的包含在此名的所有记录器都遵循同样的配置,name的值中的包含关系是指记录器的名称哟!注意啦! 3:logger中定义的level和appender中的filter定义的level的区间取交集 4:如果appender中的filter定义的 levelMin > levelMax ,则打印不出日志信息
--> <!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制--> <logger name="test.log4j.test8.UseLog4j" additivity="false"> <level value ="WARN"/> <appender-ref ref="DailyRollingFileAppender"/> </logger> <!--指定logger的设置,additivity指示是否遵循缺省的继承机制 --> <logger name="test.log4j.test8.UseLog4j_" additivity="false"> <level value ="ERROR"/> <appender-ref ref="RollingFileAppender"/> </logger> <!-- 根logger的设置--> <root> <level value ="INFO"/> <appender-ref ref="ConsoleAppender"/> <!--<appender-ref ref="DailyRollingFileAppender"/>--> </root> </log4j:configuration>

三:感受

      1)我们现在实际的项目使用的是log4j2,相应的配置方式和这里有所不同,抽时间我再好好玩一下

      2)如果整个log4j日志框架,按照比较平滑的学习曲线来学习的话,还是非常简单的,以前学习过,不过不做笔记就是学习一下,时间一长容易忘记各项配置都是干啥的,所以,在里再补上一笔,写博客的好处就体现出来了,等忘记了回头再看看,也许记忆就恢复了,谢谢博客园提供的游戏场所。——世界是个游乐场,我们都是上帝的孩子。

      3)编程这一行,我觉得应该重复的造轮子,特别是在学习某项技术的时候,网上关于log4j的博文也挺多的,刚开始我也找了一些来看,不过发现不好玩,不是自己的东西理解起来费劲不说,好多一实验还不灵,当然,有好多也是相当不错的,是经过试验的,不过不够详细。总之,好的要学习,而学习的最好途径还是自己多思考,多动手试验试验。

 

四:写这些博客我曾详细的看过一下资源(非常感谢,在此谢过!)

log4j官网

log4j教程

使用Log4j进行日志操作

最详细的Log4j使用教程

log4j百度百科

log4j维基百科

log4j详解与实战

log4j配置文件详解

log4j.properties配置详解与实例-全部测试通过

log4j.properties配置文件详解

log4j.xml配置文件详解

log4.xmlj配置文件详解

log4j——log4j.properties简单配置样例说明

一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 二:老规矩,先来个栗子,然后再聊聊感受(1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清爽啦!这里为了... 查看详情

log4j——log4j.properties简单配置样例说明

一、测试环境  与log4j(一)——为什么要使用log4j?一样,这里不再重述 二:老规矩,先来个例子,然后再聊聊感受  (1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清爽啦!... 查看详情

log4j提示找不到log4j.dtd,请问怎么回事

...,我来为您解答:  你需要将log4j.dtd文件拷贝到你的xml配置文件目录中,log4j.dtd文件在log4j的jar包的org\\apache\\log4j\\xml文件夹可以找到。  但是这里其实你不必去关心这个dtd文档,应为log4j在加载的时候并做配置的时候会自动... 查看详情

如何在java程序中手动初始化log4j.xml?

...log4j.properties复制到程序的src目录下就可以了。提供一个简单的log4j.properties配置文件实例:log4j.rootCategory=DEBUG,stdout,hostlog4j.appender.stdout.threshold=DEBUGlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternL... 查看详情

如何在spring配置文件中配置log4j.xml

...日志,修改该日志属性将对所有日志起作用#下面的属性配置中,所有日志的输出级别是info,输出源是consolelog4j.rootLogger=info,console#定义输出源的输入位置是控制台log4j.appender.console=org.apache.log4j.ConsoleAppender#定义输出日志的布局采... 查看详情

log4j默认加载的配置文件

通过查看log4j源码,版本1.2.16,log4j包去默认的位置加载配置文件;文件名如下:staticpublicfinalStringDEFAULT_CONFIGURATION_FILE="log4j.properties";staticfinalStringDEFAULT_XML_CONFIGURATION_FILE="log4j.xml";加载配置的过程:LogManager的static 查看详情

log4j(1.x)最全配置!!!(代码片段)

(本文持续更新中。。。如果要彻底了解log4j的配置都起到了什么作用,当然要先看看log4j的内部原理啦->[占位符]以下正文开始: Part1.如何让配置生效log4j并不提供默认的appender,程序启动时,log4j会自动寻找配置并初始化... 查看详情

使用 Log4j XML 配置文件配置 Hibernate 日志记录?

】使用Log4jXML配置文件配置Hibernate日志记录?【英文标题】:ConfiguringHibernateloggingusingLog4jXMLconfigfile?【发布时间】:2010-09-3023:30:15【问题描述】:我找不到任何关于如何使用Log4j的XML样式配置文件配置Hibernate日志记录的文档。这... 查看详情

解决log4j.xml问题http//jakarta.apache.org/log4j/uriisnotregistered

    在Eclipse中,配置log4j.xml出现“http//jakarta.apache.org/log4j/uriisnotregistered”的错误信息。原始的log4j.xml配置文件:<?xmlversion="1.0"encoding="GB2312"?><!DOCTYPElog4j:configurationSYSTE 查看详情

log4j.xml的实用例子

大多数讲log4j配置的教程用的都是log4j.properties文件,我觉得xml或许更好一点,在这里我提供一个我已经用于生产环境的log4j.xml的例子,先上代码,然后再解释:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationPUBLIC"-//log4j/l... 查看详情

普歌-log4j.xml配置文件“http//jakarta.apache.org/log4j/”报错,url为注册(代码片段)

原配置:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j="http://jakarta.apac 查看详情

将 formatMsgNoLookups 放在 Log4j XML 配置文件的啥位置

】将formatMsgNoLookups放在Log4jXML配置文件的啥位置【英文标题】:WheretoputformatMsgNoLookupsintheLog4jXMLconfigurationfile将formatMsgNoLookups放在Log4jXML配置文件的什么位置【发布时间】:2022-01-1519:23:36【问题描述】:我使用XML文件配置我的Log4j... 查看详情

springboot关于log4j日志配置(代码片段)

自动加载配置文件:(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找sourcefolder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用... 查看详情

lrf-log4j.xml配置文件“http//jakarta.apache.org/log4j/”报错,url为注册(代码片段)

原配置:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">解决方案:将配置改为<?xmlversion="1.0"enco... 查看详情

在 log4j xml 配置中使用系统环境变量

】在log4jxml配置中使用系统环境变量【英文标题】:Usingsystemenvironmentvariablesinlog4jxmlconfiguration【发布时间】:2010-09-1702:27:47【问题描述】:是否可以在log4jxml配置文件中引用系统环境变量(相对于Java系统属性)?我希望能够做类... 查看详情

如何通过配置log4j.xml来打印指定类或指定级别的日志信息

参考技术A123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSY... 查看详情

log4j.properties配置模板

#ForJBoss:AvoidtosetupLog4Joutside$JBOSS_HOME/server/default/deploy/log4j.xml!#Forallotherservers:CommentouttheLog4Jlistenerinweb.xmltoactivateLog4J.log4j.rootLogger=INFO,stdout,logfilelog4j.logger.Ne 查看详情

log4j.xml打印日志信息

log4j.xml文件<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j=‘http://jakarta.apache.org/log4j/‘> <appendername="myC 查看详情