log4j(六)——log4j.properties简单配置样例说明
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述
二:老规矩,先来个栗子,然后再聊聊感受
(1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清爽啦!这里为了简便,就是单单使用一个Java类来做实验了。
import org.apache.log4j.*;
/**
* Created by godtrue
*/
public class UseLog4j {
//日志记录器
private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
//程序入口——主函数
public static void main(String[]args) {
//读取使用Java的特性文件编写的配置文件
PropertyConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.properties" );
//输出日志信息,测试日志级别的作用(配置在配置文件中),仅仅输出大于等于目前有效级别的日志信息
LOGGER.debug("[1]-my level is DEBUG Godtrue 说:今天天气很好呀!");
LOGGER.info("[2]-my level is INFO");
LOGGER.warn("[3]-my level is WARN");
LOGGER.error("[4]-my level is ERROR");
}
}
(2)下面的配置文件也仅是列举了几个常见的输出目的地的配置方式,如有更多需求可以参看官网文档,其中输出到控制台和达到一定的阈值自动回滚的文件的方式是最长用,要重点了解
###
# 在代码中配置log4j环境的方式,我们已经见识过了,是不是感觉比较麻烦,我们试试使用配置文件的方式是否使您的应用程序更加的灵活。
# Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性的文件(键=值)。
# 下面我们先试试使用Java特性文件做为配置文件的方式
#
# 以下的设置参数,前文已经讲过是怎么回事的,这里就不再重复了
#
### ###
# 设置根记录器的配置,其语法为:log4j.rootLogger = [ level ] , appenderName1, appenderName2, …appenderNameN
# level用于设置日志记录的优先级,有系统自定义的8中类型,也可以自定义,官方建议只是用这四种 ERROR>WARN>INFO>DEBUG
# appenderNameN用于设置日志的输出地,可以设置多个,可以自定义名称
###
log4j.rootLogger = debug,stdout,D,E,F ###
# 设置日志记录的输出地,其语法为:
# log4j.appender.appenderName = fully.qualified.name.of.appender.class
# log4j.appender.appenderName.option1 = value1
# …
# log4j.appender.appenderName.optionN = valueN
# fully.qualified.name.of.appender.class:指日志输出目的类的全路径类名,有好许多预定义,下面介绍四个常用的
# optionN/valueN :分别是指对应的输出目的地属性和设置的属性值
#
# 如果对应的属性,仍然是对象级别的话,可以通过继续 . 的形式来设置对应的属性
#
### ###
# 输出信息到控制台,其可选的配置有如下几个:
# 1)Threshold:设置日志信息输出的级别
# 2)ImmediateFlush:设置日志信息是否被立即输出,默认为TRUE,立即输出
# 3)Target:设置日志信息输出的目标流,有两种值System.out和System.err ,默认值System.out(err为红色,out为黑色)
# 4)layout:设置日志信息输出的样式
# 5)Encoding:设置文件的编码格式,默认和系统平台的编码格式保持一致
###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.Encoding = Utf-8
log4j.appender.stdout.Threshold = INFO
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n ###
# 输出信息到文件,其常用的可选的配置有如下几个:
# 1)Threshold:设置日志信息输出的级别
# 2)ImmediateFlush:设置日志信息是否被立即输出,默认为TRUE,立即输出
# 3)File:设置日志信息输出全路径,比如:E://logs/FileAppender.log
# 4)layout:设置日志信息输出的样式
# 5)Encoding:设置文件的编码格式,默认和系统平台的编码格式保持一致
# 6)Append:设置是否将日志消息追加到指定的文件中,默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
###
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D.File = E://logs/FileAppender.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n ###
# 输出信息到文件,但是这个文件是可控的,可以配置多久产生一个新的日志信息文件,其常用的可选的配置有如下几个:
# 1)Threshold:设置日志信息输出的级别
# 2)ImmediateFlush:设置日志信息是否被立即输出,默认为TRUE,立即输出
# 3)File:设置日志信息输出全路径,比如:E://logs/DailyRollingFileAppender.log
# 4)layout:设置日志信息输出的样式
# 5)Encoding:设置文件的编码格式,默认和系统平台的编码格式保持一致
# 6)Append:设置是否将日志消息追加到指定的文件中,默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
# 7)DatePattern:设置文件回滚的时间样式
# '.'yyyy-MM 每月
# '.'yyyy-ww 每周
# '.'yyyy-MM-dd 每天
# '.'yyyy-MM-dd-a 每天两次
# '.'yyyy-MM-dd-HH 每小时
# '.'yyyy-MM-dd-HH-mm 每分钟
###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/DailyRollingFileAppender.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = WARN
log4j.appender.E.DatePattern = '.'yyyy-MM-dd-HH-mm
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n ###
# 输出信息到文件,但是这个文件是可控的,当文件的大小达到某个阈值的时候,日志文件会自动回滚,其常用的可选的配置有如下几个:
# 1)Threshold:设置日志信息输出的级别
# 2)ImmediateFlush:设置日志信息是否被立即输出,默认为TRUE,立即输出
# 3)File:设置日志信息输出全路径,比如:E://logs/RollingFileAppender.log
# 4)layout:设置日志信息输出的样式
# 5)Encoding:设置文件的编码格式,默认和系统平台的编码格式保持一致
# 6)Append:设置是否将日志消息追加到指定的文件中,默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
# 7)MaxFileSize:设置当文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB
# 8)MaxBackupIndex:设置保存备份回滚日志的最大个数
###
log4j.appender.F = org.apache.log4j.RollingFileAppender
log4j.appender.F.File =E://logs/RollingFileAppender.log
log4j.appender.F.Append = true
log4j.appender.F.Threshold = INFO
log4j.appender.F.MaxFileSize = 1
log4j.appender.F.MaxBackupIndex = 5
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n
三:感受
1)使用配置文件来控制日志的输出,相当的灵活方便,对于业务程序本身的耦合性也变得最低了,这也是在实际的工作中常常使用的一种方式
2)我这里为了方便演示和研究配置文件怎么配置的,就没有加入其它框架了,也没有采用建一个JavaWeb项目通过配置文件的方式来控制了,实际工作中应该如此的
3)这里的关注点是配置文件怎么配置,我在注释中做了足够多的说明,如果看过前面的博文,对于这些东西相对一定很容易理解,毕竟日志框架就是干这些事情的
4)这里列举的配置方式并不完整,毕竟还有许多的日志输出目的地不在其内,不过他们是常用的
5)每一个还是要好好的试验一下,理解起来才更深刻的,否则下次项目出问题了,项目负责人让你解决,你都不知道到哪里找日志文件来分析的
log4j(六)——log4j.properties简单配置样例说明的更多相关文章
- (转)log4j(六)——log4j.properties简单配置样例说明
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 1 老规矩,先来个栗子,然后再聊聊感受 (1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清 ...
- (转)log4j(七)——log4j.xml简单配置样例说明
背景:在公司中警察需要做技术支持,查看日志,而查看日志首先要自己清楚日志是如何生成的,所以有必要知道日志的前世今生! 转载出处:http://www.cnblogs.com/godtrue/p/644 ...
- log4j(七)——log4j.xml简单配置样例说明
一:测试环境与log4j(一)--为什么要使用log4j?一样,这里不再重述 二:老规矩,先来个栗子,然后再聊聊感受 (1)这里栗子有一点特别呀!给出了包名唉!想必有用,是的,配置文件中要特别说明一下 ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- 使用CEF(二)— 基于VS2019编写一个简单CEF样例
使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...
- Android中关于JNI 的学习(零)简单的样例,简单地入门
Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...
- [转]3proxy 二级代理配置样例
转自:http://www.cnblogs.com/airsong23/p/3893094.html 适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, ...
- Introspector(内省)简单演示样例 与 简单应用
简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...
- 3proxy 二级代理配置样例
适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, 而与我们相连的机器HOST-C也需要访问internet, 但是HOST-C却不能直接访问HOST- ...
随机推荐
- A Complete ActiveX Web Control Tutorial
A Complete ActiveX Web Control Tutorial From: https://www.codeproject.com/Articles/14533/A-Complete- ...
- [Spring Boot] Introduce to Mockito
We have the implemetion: @SpringBootApplication public class MockitoDemoApplication { public static ...
- Direct2D教程VI——转换(Transform)
目前博客园中成系列的Direct2D的教程有 1.万一的 Direct2D 系列,用的是Delphi 2009 2.zdd的 Direct2D 系列,用的是VS中的C++ 3.本文所在的 Direct ...
- clearfix 兼容IE6/IE7,解决ie6/ie7下多出一行的问题,bootstrap的clearfix的bug
.clearfix:before, .clearfix:after { content: "."; display: block; height: ; overflow: hidd ...
- 在Android Studio中打开Android Device Monitor时报错的解决方法
在Android Studio中打开Android Device Monitor时报以下错误时(Android-SDK\tools\lib\monitor-x86_64\configuration\1 ...
- 【Android界面实现】使用PagerTabStrip实现有滑动标签的Viewpager
在ViewPager这样的能够滑动的控件上,总是有非常多的文章能够做.上次的文章,我们实现了一个自己定义的ViewPager的指示器,这篇文章,我们主要是想利用Android自带的控件,实现一个指示器 ...
- ArcMap中条件语句的bug
ArcGIS作为一个十分强大的GIS工具平台,也有其bug,在以前在听说过关于SQL条件语句的bug,现在用的10.4.1,仍然与数据有关. 这个bug的出现也是非常偶然,与数据有密切的关系:发现省界 ...
- 从C# 2.0新特性到C# 3.5新特性
一.C# 2.0 新特性: 1.泛型 List<MyObject> obj_list=new List(); obj_list.Add(new MyObject()); 2.部分类(par ...
- linux测试工程介绍(Linux Test Project)
http://ltp.sourceforge.net/ Linux Test Project, 后台很硬,由SGI™ 发起, IBM维护,所以质量有保障. 里面介绍了很多工具,对于一般的基准测试应该是 ...
- 微软BI 之SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
基于数据仓库上的 SSRS 报表展示,一般可以直接通过 SQL 查询,存储过程,视图或者表等多种方式将数据加载并呈现在报表中.但是如果是基于 Cube 多维数据集的数据查询,就不能再使用 SQL 的语 ...