zoukankan      html  css  js  c++  java
  • log4j(七)——log4j.xml简单配置样例说明

    一、测试环境

      与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( "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( "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配置文件详解

    文章转自:http://www.cnblogs.com/godtrue/p/6444158.html

  • 相关阅读:
    Android 编程下 Eclipse 恢复被删除的文件
    Android 编程下背景图片适配工具类
    Android 编程下 Managing Your App's Memory
    Android 编程下代码之(QQ消息列表滑动删除)
    Android 编程下 Canvas and Drawables
    Android 编程下 AlarmManager
    Android 编程下去除 ListView 上下边界蓝色或黄色阴影
    Java 编程下字符串的 16 位、32位 MD5 加密
    C#枚举类型和int类型相互转换
    MVC和普通三层架构的区别
  • 原文地址:https://www.cnblogs.com/javahr/p/8335795.html
Copyright © 2011-2022 走看看