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)每一个还是要好好的试验一下,理解起来才更深刻的,否则下次项目出问题了,项目负责人让你解决,你都不知道到哪里找日志文件来分析的

时间: 2024-09-30 14:43:10

log4j(六)——log4j.properties简单配置样例说明的相关文章

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; /** * Cre

JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MSC 替换了之前的 JMX Kernel 和 MicroContainer,它主要特定能够总结例如以下三点: 高并发容器(A highly concurrent state machine) 无多相位,设计简单(No multiple phases, much simpler) 不依赖 JMX 和 J

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

Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,Java去调用C/C++的代码事实上就是去调用C/C++提供的方法.所以,第一步,我们要创建一个类,而且定义一个Native方法.例如以下: JniTest类: public class JniTest { public native String getTestString(); } 能够看到,在这

一则简单演示样例看Oracle的“无私”健壮性

Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlzYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 收集统计信息: 创建B树索引: 2. 运行select id from tbl_plan;查看它的运行计划: 由于创建了

3proxy 二级代理配置样例

适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, 而与我们相连的机器HOST-C也需要访问internet, 但是HOST-C却不能直接访问HOST-A,此时可以以HOST-A为桥梁(二级代理服务器),让HOST-C访问internet,以下是开源3proxy做为二级代理服务器的配置样例 ###########################################################################    3

[hadoop系列]Pig的安装和简单演示样例

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yahoo!捐献给Apache的一个项目,眼下还在Apache孵化器(incubator)阶段,眼下版本号是v0.5.0.Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运

[转]3proxy 二级代理配置样例

转自:http://www.cnblogs.com/airsong23/p/3893094.html 适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, 而与我们相连的机器HOST-C也需要访问internet, 但是HOST-C却不能直接访问HOST-A,此时可以以HOST-A为桥梁(二级代理服务器),让HOST-C访问internet,以下是开源3proxy做为二级代理服务器的配置样例 #############################

Java 多线程编程两个简单的样例

/** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ System.out.println("新线程输出:"+i); } } public static void main(String []

log4j学习笔记一(简单配置log4j)

1.导入log4j-1.2.17.jar包 2.在web项目的web.xml中加入以下配置 <!-- 配置Log4j --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocati