一:测试环境与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.xml简单配置样例说明的更多相关文章

  1. (转)log4j(七)——log4j.xml简单配置样例说明

    背景:在公司中警察需要做技术支持,查看日志,而查看日志首先要自己清楚日志是如何生成的,所以有必要知道日志的前世今生! 转载出处:http://www.cnblogs.com/godtrue/p/644 ...

  2. (转)log4j(六)——log4j.properties简单配置样例说明

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

  3. log4j(六)——log4j.properties简单配置样例说明

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

  4. log4j2的xml的配置样例

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

  5. log4j.xml简单配置实现在控制台打印sql执行语句【加注释】

    转: log4j.xml简单配置实现在控制台打印sql执行语句 2017年09月27日 13:02:34 艾然丶 阅读数 8804   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协 ...

  6. Android中关于JNI 的学习(零)简单的样例,简单地入门

    Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...

  7. 使用CEF(二)— 基于VS2019编写一个简单CEF样例

    使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...

  8. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  9. nginx https 配置样例

    站点nginx https 配置模板 第一章 nginx 支持https 配置样例 其他 相关链接地址 第一章 nginx 支持https 配置样例 说明:https 段配置参数说明 Server 段 ...

随机推荐

  1. 微信JS-SDK开发 入门指南

    目录 前言 1. 过程 1.1 代码 1.2 代理 1.3 下载 1.4 解压 1.5 运行 1.6 查看 2. 微信接口测试 2.1 申请测试帐号 2.1.1 测试号信息 2.1.2 接口配置信息 ...

  2. winform中的 datagriview 字段自动填充长度

    在winfrom 的 datagridview 中 绑定字段 经常回在最后面空出一部分来,显得不美观, 现在教大家如何让它自适应宽度 public static void Autogrid(DataG ...

  3. javascript中 __proto__与prorotype的理解

    我们先看看这样一段代码: <script type="text/javascript"> var Person = function () { }; var p = n ...

  4. 活动页怎么切图photoshop

    一 切固定大小的单个图片 1.用pc打开图像 2.按ctrl+A(全选) 3.点击 选择 ->变换选区 ->拉参考线(把参考线放到最中央)->按回车 ->ctrl+d(取消全选 ...

  5. 【LCA求最近公共祖先+vector构图】Distance Queries

    Distance Queries 时间限制: 1 Sec  内存限制: 128 MB 题目描述 约翰的奶牛们拒绝跑他的马拉松,因为她们悠闲的生活不能承受他选择的长长的赛道.因此他决心找一条更合理的赛道 ...

  6. CoolBlog开发笔记第3课:创建Django应用

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 前言 经过上一节我们已经创建了CoolBlog工程,但是关于CoolBlog的功能代码 ...

  7. javascript封装的函数

    /*获取一个指定长度随机数*/ csdn.random = function (len) { if (!len) len = 5; var r = Math.random().toString(); ...

  8. 大数据 Hadoop,Spark和Storm

    大数据(Big Data)   大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复 ...

  9. Kafka 源代码分析之LogManager

    这里分析kafka 0.8.2的LogManager logmanager是kafka用来管理log文件的子系统.源代码文件在log目录下. 这里会逐步分析logmanager的源代码.首先看clas ...

  10. pouchdb-find( pouchdb查询扩展插件 ,便于查询)

    pouchdb-find pouchdb-find 环境搭建 下载lib bower install pouchdb-find 引入js <script src="pouchdb.js ...